CSS(二)

目录

CSS三大特性

 1.层叠性

2.继承性

行高的继承

3.优先级

选择器权重划分

 总结

CSS盒子模型 

盒子模型 

 1.盒子模型(Box Model)组成

2.边框(border)

3.表格的细线边框

4.边框会影响盒子的实际大小

5.内边距(padding)

6.外边距(margin)

 7.外边距典型应用-水平居中

 8.外边距合并

 9.清除网页元素的内外边距


CSS三大特性

 1.层叠性

 相同的选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式

层叠性主要解决样式冲突的问题

层叠性原则:

·样式冲突,遵循就近原则,哪个样式离结构近,就执行哪个样式

·样式不冲突,不会层叠

2.继承性

 子标签会继承父标签的某些样式,如文本颜色和字号

行高的继承

 body {

        font:12px/1.5 Microsoft YaHei;

}

 ·行高可以跟单位也可以不跟

3.优先级

 当同一个元素指定多个选择器,就会有优先级的产生

<1>选择器相同,则执行层叠性

<2>选择器不同,则根据选择器权重执行

选择器权重划分

选择器选择器权重

继承

*

0,0,0,0
元素选择器0,0,0,1

类选择器

伪类选择器

0,0,1,0
ID选择器0,1,0,0
行内样式style=“”1,0,0,0
!important 重要的无穷大

优先级注意点:

 <1>权重是有4组数字组成,但是不会有进位。

<2>可以理解为类选择器永远大元素选择器,id选择器永远大于类选择器,以此类推。

<3>等级判断从左向右,如果某一位数值相同,则判断下一位数值。

<4>可以简单记忆法:通配符继承权重为0

                                   标签选择器为1

                                   类(伪类)选择器为10

                                   id选择器100

                                   行内样式表为1000

                                   !important无穷大

<5>继承的权重是0,如果该元素没有直接选中,不管父元素权重有多高,子元素得到的权重都是0 

总结:所以以后我们看标签到底执行哪个样式,就先看这个标签有没有直接被选出来

   a链接浏览器默认指定了一个样式,蓝色的,有下划线

<title>CSS权重注意点</title>
  <style>
    /* 父亲的权重是100 */
    #father {
      color: red;
    }
    /* p继承的权重为0 */
    /* 所以以后我们先看标签到底执行哪个样式,就先看这个标签有没有直接被选出来 */
    p {
      color: pink;
    }
    body {
      color: red;
    }
    a {
      color: green;
    }
  </style>
</head>

<body>
  <div id="father">
    <p>你还是很好看</p>
  </div>
  <a href="#">我是单独的样式</a>
</body>

 总结

1. 权重叠加:如果是复合选择器,则会有权重叠加,需要计算权重

<title>CSS权重的叠加</title>
  <style>
    /* 复合选择器会有权重叠加的问题 */
    /* 权重虽然会叠加,但是永远不会有进位 */
    /* ul li 权重为 0,0,0,1+0,0,0,1=0,0,0,2 */
    ul li {
      color: green;
    }
    /* li的权重为0,0,0,1 */
    li {
      color: red;
    }
    /* .nav li 权重为0,0,1,0+0,0,0,1=0,0,1,1 */
    .nav li {
      color: pink;
    }
  </style>
</head>

<body>
  <ul class="nav">
    <li>大猪蹄子</li>
    <li>大肘子</li>
    <li>猪尾巴</li>
  </ul>
</body>

 小测试:

div ul li---------权重------   0,0,0,3

.nav ul li -------权重-----   0,0,1,2

a:hover---------权重-----   0,0,1,1

.nav a   ---------权重----   0,0,1,1

CSS盒子模型 

网页布局过程:

1.先准备好相关的网页元素,网页元素基本都是盒子Box

2.利用CSS设置好盒子样式,然后摆放到相应位置

3.往盒子里面装内容

网页布局的核心本质:利用CSS摆盒子

盒子模型 

 1.盒子模型(Box Model)组成

boder盒子的边框
content盒子的内容
padding盒子的内边距
margin盒子的外边距两个盒子之间的距离

 

2.边框(border)

 边框有三部分组成:边框宽度(粗细),边框样式,边框颜色

 语法:

border:border-width

            border-style

            border-color

属性作用
border-width定义边框粗细,单位是px
border-style边框的样式 

solid实现边框

dashed虚线边框

dotted点线边框

border-color边框颜色

边框简写:(没有顺序)

border:1px solid red; 

边框分开写法:

border-top:1px solid red;  /* 只设定上边框,其余同理 */

3.表格的细线边框

border-collapse属性控制浏览器绘制表格边框,他控制相邻单元格的边框

语法:

border-collapse:collapse;

<1>collapse单词是合并的意思

<2>border-collapse:collapse;表示相邻边框合并在一起

4.边框会影响盒子的实际大小

 边框的外边框会增加盒子的实际大小

方法:

<1>测量盒子大小,不量边框

<2>如果测量的时候包含了边框,则需要width/height减去边框宽度

5.内边距(padding)

 padding属性用于设置内边距,即边框与内容之间的距离 

属性作用
padding-left左内边距
padding-right右内边距
padding-top上内边距
padding-bottom下内边距

padding简写属性

 简写属性可以有一到四个值

值的个数表达意思
padding:5px;1个值,代表上下左右都有5像素内边距
padding:5px 10px;2个值,代表上下内边距是5像素,左右内边距是10像素
padding:5px 10px 20px;3个值,代表上内边距是5像素,左右边距是10像素,下边距是20像素
padding:5px 10px 20px 30px;4个值,上是5像素,右10像素,下是20像素,左是30像素  顺时针

注意:

1.内容和边框有了距离,添加了内边距

2.padding影响了盒子的实际大小,也就是说,如果盒子有了宽度和高度,此时在指定内边框,会撑大盒子

解决方法:

如果保证盒子跟效果图大小报纸一致,则让width/height减去多出来的内边距大小即可

3.如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小 

6.外边距(margin)

 margin属性用于设置外边距,即可控制盒子和盒子之间的距离 

属性作用
margin-left左外边距
margin-right右外边距
margin-top上外边距
margin-bottom下外边距
  <title>盒子模型之外边距</title>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;
    }
    /* 在1盒子下面加外边距,或者在2盒子上面加外边距,效果是一样的 */
    /* .one {
      margin-bottom: 20px;
    } */
    .two {
      margin-top: 20px;
    }
  </style>
</head>

<body>
  <div class="one">1</div>
  <div class="two">2</div>
</body>

 注意:margin简写代表的意义跟padding完全一致

 7.外边距典型应用-水平居中

外边距可以让块级盒子水平居中,但是必须满足两个条件:

<1>盒子必须制定了宽度(width)

<2>盒子左右的外边距都设置为auto

.header {width:960;

               margin:  auto;

常见的写法,以下三种都可以: 

margin-left:auto; margin-right:auto;
margin:auto;
margin:0 auto;
(使用最多的写法,表示上下是0,左右是auto居中)

注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align:center即可

 8.外边距合并

 使用margin定义块元素的垂直外边距时,可能会出现外边距的合并

 主要有两种情况:

<1>相邻块元素垂直外边距的合并

当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和,取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并。

 解决方法:尽量只给一个盒子添加margin值

<style>
    .damao,.ermao {
      width: 200px;
      height: 200px;
      background-color: pink;
    }
    .damao {
      margin-bottom: 100px;
    }
    .ermao {
      margin-top: 200px;
    }
  </style>
</head>

<body>
  <div class="damao">大毛</div>
  <div class="ermao">二毛</div>
</body>

<2>嵌套块元素垂直外边距的塌陷

对于两个嵌套关系(父子关系)的块元素,父元素上有外边距同时子元素也有子元素也有上外边距,此时父元素会塌陷较大的外边距值

 解决方案:

①可以为父元素定义上边框 (transparen意为透明)

②可以为父元素定义上内边距

③可以为父元素添加overflow:hidden;

···还有其他方法,比如浮动,固定,决定定位的盒子不会有塌陷问题,后面在总结

<style>
    .father {
      width: 400px;
      height: 400px;
      background-color: purple;
      margin-top: 50px;
      /* 父元素加边框 transparent意为透明 */
      /* border: 1px solid red; */
      /* border: 1px solid transparent; */
      /* 父元素加内边距 */
      /* padding: 1px; */
      /* 父元素加overflow: hidden; */
      overflow: hidden;
    }
    .son {
      width: 200px;
      height: 200px;
      background-color: pink;
      margin-top: 100px;
    }

  </style>
</head>

<body>
  <div class="father">
    <div class="son"></div>    
  </div>
</body>

 9.清除网页元素的内外边距

 网页元素有很多带有默认的内外边距,而且不同浏览器默认的也不一致,因此我们在布局前,首先要清除下网页元素的内外边距。

/* 这句话也是我们CSS的第一行代码 */

 * {

        padding :0;  /* 清除内边距 */

        margin: 0; /* 清除外边距 */

}

 注意:行内元素为了照顾兼容性,尽管只设置左右内外边距,不要设置上下内外边距,但是转换为块级元素和行内块元素就可以了(以span为例子)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值