前端之CSS盒模型

一:基础选择器

* (统配选择器):HTML,body,body下用于显示的标签
div (标签选择器):该标签名对应的所有该标签
.   (class选择器)(eg: .div => class="div"):类名为div的所有标签
#  (id 选择器)(eg:#div => id="div"):id 名为div的唯一标签

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>基础选择器</title>
    <style>
        /*在实际开发中, 尽量少用或不用标签名来作为选择器*/
        /*标签名作为选择器一般在该标签为最内层(语义|功能)标签*/
        div {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
    <link rel="stylesheet" href="css/1.css">
    <!--总结: 内联和外联, 相同属性采用下者覆盖上者, 不同属性叠加-->

    <style>
        /*在css语法中如何来表示class名 => .就代表class*/
        .div1 {
            background-color: cyan;
        }
        .div2 {
            background-color: brown;
        }

        /*问题:css中用什么标识id => #*/
        #did1 {
            background-color: tan;
        }
    </style>
    <style>
        * {
            background-color: yellow;
        }
        /*html和body颜色被改变了, 但所有的div颜色并没有改变
        原因: 不同的名字(选择器)具有优先级*/
    </style>
</head>
<body>
    <div>1</div>
    <div style="background-color: pink">2</div>
    <!--总结: 行间式属于逻辑最下方, 相同的属性一定会覆盖内联和外联-->
    <div class="div1">3</div>
    <!--问题: 不使用行间式单独操作(可读性差), 那又如何来单独改变其颜色 => 起别名-->
    <div class="div2"></div>
    <!--总结: 用class起名, 分类别, 可以重名 => 用什么方式唯一标识一个标签-->
    <div id="did1"></div>
    <!--给该标签设置唯一标识符 id-->

    <!--了解: 统配选择器 => css符合 => * -->
    <!--控制着: html body 及 body下所有用来显示的标签-->

</body>
</html>

选择器示例

二:选择器优先级

理解:控制范围越精确,优先级越高,所设置的样式就会覆盖优先级低的相同属性样式
结论:
优先级顺序:统配<标签<class<id<行间式<!important

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>选择器优先级</title>
    <style>
        #div {
            background-color: yellow;
        }

        .div {
            background-color: yellowgreen;
        }

        div {
            background-color: green!important;
        }

        * {
            width: 100px;
            height: 100px;
            background-color: darkgreen;
        }
        /*!important 优先级要强于行间式, 在属性值与;之间设定*/
    </style>
</head>
<body>
    <div class="div" id="div" style="background-color: red"></div>
    <!--总结: 行间式优先级要高于内连外连所有选择器的优先级, 但是不能高于!important-->
</body>
</html>

选择器优先级示例

三:长度和颜色

长度单位:px  mm  cm   em   rem   vm  vh   in
“”“
颜色设置方式:
1.颜色单词
2.#000000~#FFFFFF(#abc == #AABBCC)如果是AABBCC的话可以缩写成ABC
3.rgb(0~255,0~255,0~255) | rgba(0~255,0~255,0~255,0~255,0~1)最后的a(0~1)表示的是透明度,rgb表示的是颜色
”“”

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>长度与颜色</title>
    <style>
        .div {
            /*px mm cm em rem vw vh in*/
            width: 10in;
            height: 100px;
            background-color: rgba(255, 0, 0, 0.5);
        }
    </style>
</head>
<body>
    <div class="div"></div>
</body>
</html>

示例

四:显示方式display

display:what:控制标签在页面中的显示方式的属性why:通过设置该属性的不同属性值,使其在页面中的显示方式达到设定的效果,且对于CSS的样式支持程度也不一样

display: inline ;
1.同行显示
2.只支持部分CSS样式(不支持宽高)
3.宽高由文本内容撑开

display:block ;
1.异行显示
2.支持所有CSS样式
3.设置了宽高就采用设置的值,宽高也就有默认的特性

display:inline-block;
1.同行显示
2.支持所有的CSS样式
3.设置了宽高就采用设置的值

总结:标签的显示方式就是用display属性控制1.带有inline的就会同行显示,带有block的就会支持所有CSS样式2.带有inline的都是与内容相关的标签,带有block的主要用来搭建架构的

嵌套关系:页面架构就是由标签一层层嵌套关系形成的嵌套关系有一定的规则:1.inline-block类型不建议嵌套任意标签,所以系统的inline-block都设计成了单标签2.inline类型只嵌套inline类型的标签3.block类型可以嵌套任意类型标签(注:hn和p只建议嵌套inline类型标签)

结论:1.inline嵌套block和inline-block,不起任何作用,所以只能嵌套inline2.inline-block可以嵌套其他类型标签,但一定要结合vertical-align属性操作,左右还有一空格间距

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>display</title>
    <style>
        span {
            width: 200px;
            height: 50px;
            background-color: yellow;
        }
        p {
            width: 200px;
            height: 50px;
            background-color: red;
        }
        img {
            width: 200px;
            /*height: 50px;*/
        }
    </style>
</head>
<body>
<span>123<i>456</i><b>789</b></span>
<span>123<i>456</i><b>789</b></span>

<p>123<i>456</i><b>789</b></p>
<p>123<i>456</i><b>789</b></p>

<img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=538916491,4234853604&fm=200&gp=0.jpg" alt="">
<img src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=538916491,4234853604&fm=200&gp=0.jpg" alt="">

<hr>

<!--
通过display属性值进行划分
-->
<style>
    Grace {
        color: blueviolet;
        width: 200px;
        height: 50px;
        background-color: red;
    }
    .o1 {
        display: inline;

    }
    .o2 {
        display: block;

    }
    .o3 {
        display: inline-block;

    }

</style>
<Grace class="o1">123</Grace>
<Grace class="o1">123</Grace>
<hr>
<Grace class="o2">123</Grace>
<Grace class="o2">123</Grace>
<hr>
<Grace class="o3">123</Grace>
<Grace class="o3">123</Grace>

<hr>

<style>
    .div {
        width: 100px;
        height: 100px;
        background-color: orange;
        display: inline-block;
    }
    /*标签的显示方式就是用display属性控制*/
</style>
<div class="div">000</div>
<div class="div">111</div>
</body>
</html>

标签分类之display

五:盒模型

盒模型由四部分组成:margin + border + padding + content

1.margin:外边距,控制盒子的位置(布局),通过左和上控制自身位置,通过右和下影响兄弟盒子的位置(划区域)
2.border:边框,样式/宽度/颜色(solid表示实线,dashed表示虚线,dotted表示点状线)
3.padding:内边距,从显示角度控制文本的显示区域
4.content:内容区域,由宽 X 高组成

注意:
1.margin,padding:起始为上,顺时针依次赋值,不足边时去对边
2.要做到文本内移,设置padding,如果又想显示区域不变,相应减少content

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>盒模型</title>
    <style>
        body {
            margin: 0;
        }

        /*margin | border | padding | content(width x height)*/
        .box {
            width: 200px;
            height: 200px;
            background-color: orange;

            /*padding: 10px 10px 10px 10px;*/
            /*padding: 20px 30px;*/
            /*起始为上, 顺时针依次赋值, 不足边取对边*/

            /*border-style: solid;*/
            /*border-width: 10px;*/
            /*border-color: red;*/
            /*transparent透明色*/
            border: blue dashed 20px;

            /*margin: 100px 50px;*/
            /*起始为上, 顺时针依次赋值, 不足边取对边*/
        }

        .box {
            padding: 10px 0 0 10px;
            width: 190px;
            height: 190px;
            /*margin-left: -80px;*/
            /*margin-top: -80px;*/
            margin-bottom: 100px;
        }

    </style>
</head>
<body>
    <div class="box">123</div>
    <div>456</div>
</body>
</html>

盒模型

六:盒模型布局

1.上下两个盒子的margin-bottom和margin-top功能相同,同时出现,取大值
2.第一个有显示区域的子级会和父级联动(margin-top重叠),取大值

解决方案:
1.父级设置border-top
2.父级设置padding-top

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>盒模型布局</title>
    <style>
        div {
            width: 78px;
            height: 33px;
            background-color: orange;
            border: 1px solid black;
        }
        /*前提: 盒子显示区域 80 x 35*/
        .d1 {}
        .d2 {
            margin-left: 80px;
            margin-top: -35px;
            /*margin-bottom: 35px;*/
        }
        .d3 {
            margin-left: calc(80px * 2);
            margin-top: -35px;
        }
        .d4 {
            margin-left: calc(80px * 3);
            margin-top: -35px;
        }
        .d5 {
            margin-left: calc(80px * 4);
            margin-top: -35px;
        }
        .d6 {
            margin-left: calc(80px * 5);
            margin-top: -35px;
        }
        .d7 {
            margin-left: calc(80px * 6);
            margin-top: -35px;
        }
    </style>
</head>
<body>
    <!--.d${$}*7-->
    <div class="d1">1</div>
    <div class="d2">2</div>
    <div class="d3">3</div>
    <div class="d4">4</div>
    <div class="d5">5</div>
    <div class="d6">6</div>
    <div class="d7">7</div>

    <hr>
    <!--需求: b1 与 b2 上下间接50px-->
    <style>
        .b1 {
            margin-bottom: 50px;
        }
        .b2 {
            margin-top: 50px;
        }
        /*总结: 上下两个盒子的margin-bottom和margin-top功能相同, 同时出现, 取大值*/
    </style>
    <div class="b1"></div>
    <div class="b2"></div>

    <!--了解: 左右正常叠加-->
    <style>
        .s1 {
            margin-right: 10px;
        }
        .s2 {
            margin-left: 10px;
        }
    </style>
    <span class="s1">1</span><span class="s2">2</span>

    <hr>

    <style>
        .sup {
            width: 200px;
            height: 200px;
            background-color: orange;
            /*margin-top: 40px;*/
            /*border-top: 1px solid black;*/
            padding-top: 10px;
        }
        .sub1 {
            /*border: 1px solid red;*/
            width: 50px;
            height: 50px;
            background-color: red;
            margin-top: 50px;
        }
        .sub2 {
            width: 50px;
            height: 50px;
            background-color: pink;
            margin-top: 50px;
        }
        /*总结: 第一个有显示区域的子级会和父级联动(margin-top重叠), 取大值*/
        /*解决方案: 1.父级设置border-top | 2.父级设置padding-top*/
    </style>
    <section class="sup">
        <section class="sub1"></section>
        <section class="sub2"></section>
    </section>
</body>
</html>

盒模型布局

原文地址:https://www.cnblogs.com/liuxiaolu/p/10278922.html

时间: 2024-11-08 12:07:44

前端之CSS盒模型的相关文章

前端之CSS盒模型介绍

css盒模型 css盒模型是css的基石,盒模型由content(主体内容),padding(补白,填充),border(边框),margin(外间距); 1.content: width:数值+单位; 主体内容的宽度 height:数值+单位; 主体内容的高度 2.padding(补白或填充): (a)padding:10px; 设置一个值,代表上,下,左,右均为10px (b)padding:20px 10px; 设置两个值,代表上下为20px,左右为10px (c)padding:20px

2017年总结的前端文章——CSS盒模型详解

CSS的盒模型是CSS的基础,同时也是难点,这个问题经常在面试中会被问到,属于经典问题了.很多博客里讲得也很模糊不清,于是,我在这里重新整理一下. 可以认为每个html标签都是一个方块,然后这个方块又包着几个小方块,如同盒子一层层的包裹着,这就是所谓的盒模型. 盒模型分为IE盒模型和W3C标准盒模型. IE盒模型和W3C标准盒模型的区别是什么? 1. W3C 标准盒模型: 属性width,height只包含内容content,不包含border和padding. 2. IE 盒模型: 属性wid

大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案

概览 CSS盒模型,规定了元素框来处理元素的 内容.内边距.边框和外边距的方式 元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距:且外边距是透明的,所以并不会阻挡其后的元素 * { margin: 0; padding: 0; } 这是在CSS中最常见的初始化CSS的代码,用于覆盖浏览器的默认样式 浏览器兼容性 大多数浏览器都会按照上面的图示来呈现内容.然而 IE 5 和 6 的呈现却是不正确的.根据 W3C 的规范,元素内容占据的空间是由 w

从零开始学习前端开发 — 3、CSS盒模型

★  盒子模型 (标准的盒模型) css盒模型的概念及组成 css盒模型是css的基石,每个html标签都可以看作是一个盒模型. css盒模型是由内容(content),补白或填充(padding),边框(border),外边距(margin)四部分组成(具体如图所示) 1.内容(content) 宽度 width:数值+单位; 高度 height:数值+单位; eg: .box{width:200px;height:100px;} 2.补白或填充 (设置内容和边框之间的距离) 语法:paddi

HTML和CSS前端教程05-CSS盒模型

目录 1. CSS盒模型 1.1 元素的尺寸 1.2. 元素内边距 padding 1.3. 元素外边距 margin 1.4. 处理溢出overflow 1.5. 元素的可见性Visibility 2. CSS元素的盒类型 2.1. 块级元素(区块) 2.2. 行内元素 2.3. 行内-块元素 2.4. 盒类型元素转换dispaly 3. CSS盒元素的浮动float 1. CSS盒模型 元素的尺寸 1.1 元素的尺寸 属性 值 说明 width auto.长度值或百分比 元素的宽度 heig

html5知识点:CSS盒模型

一. CSS层叠 在前端程序员对CSS编写的过程中,CSS选择器的作用是用来选中某个元素,并对当前的元素进行样式上的渲染,那么每一个选择器都有属于自己的一些解析规则.那我们今天所探讨的CSS层叠就是浏览器对多个样式的来源进行叠加,并最终解析成渲染效果,那这个过程我们就称为CSS层叠. 1) CSS样式的来源 css之所以有"层叠"的概念,是因为有多个样式来源.其实css的样式来源有5个,开发人员只能接触到后面3个. 前三个我们程序员习惯的称为:"内联样式表".&qu

每日分享!介绍Css 盒模型!

如何定义盒模型: 在CSS盒子模型理论中,页面中所有的元素都是看成一个盒子,并且还占据一定的空间. 一个页面是由很多这样的盒子组成的.这些盒子之间都会相会影响,因此我们掌握CSS盒模型相当重要.需要理解盒模型,我们需要从两个方面去考虑:一.理解一个单独盒子的内部结构,二是理解多个盒子之间的相互关系! 盒子的组成:盒子是由(content(内容) + padding(内边距)+ border(边框) + margin(外边距) ) 四个属性组成.此外,在盒子模型中,还有width(宽度)和 hei

css盒模型

css盒子模型是为了让我们充分理解div+css模型的定位功能,盒子模型在学习div+css布局方式中必须要学习的一个模型. 那什么是css盒模型呢? 网页设计中常听到的属性名:内容(content).填充(padding).边框(border).边界(margin).css盒模型都具备这些属性.这些属性和日常生活中盒子的属性是一样的.内容就是盒子里面装的东西,而填充就是像盒子里装的一些反震的材料,边框就是箱子的本身,边界呢就像盒子之间的空隙. 盒子的模型有2种,分别是IE盒子模型和标准盒子模型

第16章 CSS盒模型下

第 16章 CSS盒模型[下]学习要点:1.元素可见性2.元素盒类型3.元素的浮动 本章主要探讨 HTML5中 CSS盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性使用visibility属性可以实现元素的可见性,这种样式一般可以配合 JavaScript来实现效果.样式表如下:属性 visibility 值 说明 CSS版本visible 默认值,元素在页面上可见 2hidden 元素不可见,但会占据空间. 2collapse 元素不可见,隐藏表格的行与列. 2 如果不