码迷,mamicode.com
首页 > Web开发 > 详细

CSS基础(2)

时间:2019-09-01 10:20:48      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:none   标签   tar   and   盒子模型   样式   需要   box   head   

1.结构伪类选择器

span:first-child 选择span元素的父元素中的第一个子元素,第一个子元素还必须得是span标签

span:last-child 选择span元素的父元素中的最后一个子元素,最后一个子元素还必须得是span标签

span:nth-child(n) 选择span元素的父元素中的第n个子元素,第n个子元素还必须得是span标签 注意是从前面开始查找

span:nth-last-child(n) 选择span元素的父元素中的第n个子元素,第n个子元素还必须得是span标签 注意是从后面开始查找

凡是涉及到n的操作,n的取值都可以从0开始,可以取0,1,2,3,4,5,6,7,8,9...

span:nth-child(2n) 原理同上,是取偶数行

span:nth-child(2n+1) 原理同上,是取奇数行

span:nth-child(even) 原理同上,是取偶数行

span:nth-child(odd) 原理同上,是取奇数行

 

2.目标伪类选择器 :target

获取被选中的那个元素

 

3.盒子模型

在网页布局当中为了页面的稳定,美观,以及维护的方便,我们是将每一个标签都看成是一个盒子模型

所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。

盒模型的组成:border + content + padding + margin

 

3.1盒子模型中的边框 border

border: border-width || border-style || border-color

border: 1px solid red; 最最常用的一种写法

 

3.2内填充padding

边框(border)和内容(content)之间的空间为内填充,也就是padding

padding的不同写法:

padding: 30px; 只有一个值的时候,表示四个方向都是同一个值

padding: 30px 70px; 两个值的时候,第一个值表示上下,第二个值表示右左。

padding: 20px 50px 80px; 三个值的时候,第一个值表示上,第二个值表示右左,第三个值表示下。

padding: 20px 50px 80px 120px; 四个值的时候,表示上右下左。

 

3.3盒子面积的影响因素

当一个盒子的宽和高设置了之后,如果再加上border或是padding的话,会影响当前盒子原来的面积

如果想保持当前的面积不变的话,需要在内容的宽度上将多出来的值给减掉。

 

3.4外填充margin

边框border之外的空间,或是盒子与盒子之间的距离就是margin

margin的不同写法:

margin: 30px; 只有一个值的时候,表示四个方向都是同一个值

margin: 30px 70px; 两个值的时候,第一个值表示上下,第二个值表示右左。

margin: 20px 50px 80px; 三个值的时候,第一个值表示上,第二个值表示右左,第三个值表示下。

margin: 20px 50px 80px 120px; 四个值的时候,表示上右下左。

 

3.5使用margin设置外边距的时候带来的问题

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

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

解决的方式:尽量避免同时在上下两个盒子中都设置了margin-bottom和margin-top

2.父子元素共享margin的问题

当父元素嵌套了一个子元素的时候,如果子元素设置了一个margin-top,则父元素也会有margin-top样式

解决方案:

1.给父元素设置一个边框 border:1px solid red;

2.给父元素添加一个属性 overflow:hidden;

 

4.后代选择器

作用:先限定范围,然后再选择标签对象

从某个范围里面,选择其中的子元素

.box ul li 选择类名为box的元素下面的ul标签下面的所有的li标签

.demo .li2 选取类名为demo的元素下面的类名为li2的所有的标签

.demo li:nth-child(3) 选择类名为demo的元素下面的li标签中的第3个

 

5.浮动float

浮动是用来解决块级元素在一行并列显示的问题,把要在一行显示的块行元素都设置一个属性float:left;

浮动会有贴靠现像,要浮动都浮动,要不浮动都不浮动。

浮动的元素,会盖住下面没有浮动的元素,因为浮动的元素漂起来,不浮动的元素钻到上面那个元素的底下去了。

 

6.CSS3中的盒子模型

为了保证盒子面积始终不变,需要设置一个属性:

box-sizing: border-box; --- content-box是默认的值,css2就一直遵循的这种标准。

 

7.小结

结构伪类:

:first-child

:last-child

:nth-child

:nth-last-child

:target

 

盒子模型的组成:内容 + 内边距 + 外边距 + 边框

conent + padding + margin + border

 

浮动:是用来解决块级元素在一行显示的问题的。

float:left;

后代选择器: .box ul li

css3中的盒子模型: box-sizing: border-box 会让盒子进入内减模式

*{margin:0;padding:0} 清除标签的默认内外边距

去掉无序列表的小黑点: list-style:none;

 

Emmet语法补充

ul>li{这是第$个li标签}*6

<ul>
    <li>这是第1个li标签</li>
    <li>这是第2个li标签</li>
    <li>这是第3个li标签</li>
      <li>这是第4个li标签</li>
      <li>这是第5个li标签</li>
      <li>这是第6个li标签</li>
</ul>

 

w100 h100

.box {
    width: 100px;
    height: 100px;
}

 

CSS基础(2)

标签:none   标签   tar   and   盒子模型   样式   需要   box   head   

原文地址:https://www.cnblogs.com/sauronblog/p/11441361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!