WEB前端之CSS学习续

CSS盒子模型本质上是一个盒子,封装周围的HTML元素,包括:边框、内外边距和实际内容。

border:边框     content:内容      padding:内边距       margin:外边距

边框border可以设置元素的边框,边框由三部分组成:边框宽度(粗细)、边框样式、边框颜色。

border-width:边框粗细,单位为px。

border-style:边框样式,none | hidden | dotted(点线边框) | dashed(虚线边框) | solid(实线边框) | double | groove | ridge | inset | outset

border-color:边框颜色

边框可以进行简写:1px  solid  red;//没有先后顺序

边框可以分开来写:border-top: 1px  solid  red;  只设定上边框,其余同理。

表格的细线边框:border-collapse属性控制浏览器绘制表格边框的方式控制相邻单元格的边框。

border-collapse:collapse表示合并单元格的边框。

边框会影响盒子的实际大小,会变大。

内边距:padding用于设置内边距,边距与内容间的距离。

padding-left:20px;

padding-top:30px;

padding属性简写:

        padding:5px;  1个值表示上下左右都有5px内边距。

        padding: 5px 10px;  2个值,代表上下内边距是5px,左右边距是10px.

        padding:5px 10px 20px; 3个值,代表上边距5px,左右内边距10px,下边距20px.

        padding:5px 10px 20px 30px; 4个值,代表上、下、左、右内边距分别为5px,10px,20px,30px.

padding会改变盒子的实际大小,内边距可以撑开盒子。

如果盒子本身没有指定width/height,padding内边距无法撑开盒子


子元素如果不指定宽度,则默认和父亲宽度相同;
继承宽度、不继承高度;

外边距margin:用于设置外边距,即控制盒子与盒子之间的距离;
margin简写方式和padding完全一样;

外边距可以让块级盒子水平居中,但必须满足两个条件:1)盒子必须指定宽度;2)盒子左右外边距都设置为auto;

外边距合并:使用margin定义块元素垂直外边距,会出现外边距的合并;
1)当上下两个块级元素相遇时,上边的元素有下边距margin-bottom,下面的元素有上边距margin-top,则垂直距离不是margin-bottom与margin-top之和,取两个值中较大者这种现象被称为相邻元素垂直外边距的合并,因此尽量只给一个盒子添加margin值;
2)嵌套垂直外边距:
    对于两个嵌套关系的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值;
    解决方案:1)为父元素定义上边框;2)为父元素定义上内边距;3)为父元素添加overflow:hidden;

清除内边距:    网页元素带有默认的内外边距,使用不同浏览器默认设置不一样,因此会在布局前,首先清楚网页元素的内外边距;

* {
    padding:0px;
    margin: 0px;
}

行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以了;s

去掉li前面的项目符号(小圆点)
list-style:none;

CSS3中新增了圆角边框样式,盒子就可以变成圆角了;
border-radius属性用于设置元素的外边框圆角;
border-radius:length;
radius半径(圆的半径)原理:椭圆形边框交集形成圆角;
使盒子成为一个圆,先来一个正方形,然后使length为边的一半;


盒子阴影:CSS3中新增了盒子阴影,我们可以使用box-shadow属性为盒子添加阴影;
语法:box-shadow:h-shadow v-shadow blur spread color inset;
h-shadow  必须,水平阴影的位置,允许为负值;
v-shadow  必须,垂直阴影的位置,允许负值;
blur     可选,模糊距离;
spread   可选,阴影的尺寸;
color    可选,阴影的颜色;
inset    可选,可将外部阴影改为内部阴影;
盒子阴影不占用空间;
文字阴影(了解):
 text-shadow属性将阴影应用于文本;
 text-shadow:h-shadow v-shadow blur color;
 h-shadow 必须,水平阴影的位置,允许负值;
 v-shadow 必须,垂直阴影的位置,允许负值;
 blur 可选,模糊距离;
 color 可选,阴影的颜色;

 CSS浮动:
 传统网页布局的三种方式:1)普通流(标准流/文档流);2)浮动;3)定位;
 普通流:标签按照默认好的方式进行排列;最基本的布局方式;
 浮动典型的应用:可以让多个块级元素一行内排列显示;
 网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动;
 浮动:用于创建浮动框,将其移动到一端,知道左边缘或者右边缘触及包含块或者另一个浮动框边缘;
 语法:
 选择器 {
     float:属性值;
 }
 属性值      描述
 none        元素不浮动
 left       元素向左浮动
 right      元素向右浮动;

 浮动特性:
 1)浮动元素会脱离标准里(脱标);
 2)浮动元素会一行内显示并且元素顶部对齐;
 3)浮动元素会具有行内块元素特性;

 浮动的盒子不再保留原先的位置;
 如果多个盒子都设置了浮动,则他们会按照属性值一行内显示并且顶端对齐排列;
 任何元素都可以浮动,无论原先是什么模式的元素,添加浮动后,具有行内块元素特性;
 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定;
 浮动元素经常和标准流父级搭配使用:
 为了约束浮动元素位置,网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部元素采取浮动排列左右位置;
 网页布局先设置盒子大小,再设置盒子位置;

 浮动布局注意点:
 如果一个元素浮动了,理论上其他兄弟元素也要浮动

 标准的父元素是有高度的,但有时候不方便给父盒子高度;参考商品多少不定;
 理想状况下,让子元素撑开父盒子;
 子盒子浮动不占有位置,最后父级盒子高度为0;使用清除浮动来解决这个问题;
 
 清除浮动:清除浮动元素造成的影响;
 如果父盒子本身有高度,则不需要清除浮动;
 清楚浮动后,父级就根据浮动的子盒子自动检测高度,父级有了高度,就不会影响下面的标准流;
 选择器 {
     clear:left/right/both;
 }

 清除浮动的方法:
 1)额外标签法(隔离法);
 2)父级添加overflow属性;
 3)父级添加after伪元素;
 4)父级添加双伪元素;

 额外标签法:浮动最后一个元素后面添加一个空的标签;例如<div style="clear:both"></div>或者其他标签<br>
 新添加的空标签要求是块级标签,不能是行内标签;
 可以给父级元素添加overflow属性,将其属性值设置为hidden/auto/scroll;
 清除浮动:after伪元素;
 :after是给父级元素添加
 .clearfix:after {
     content:"";
     display:block;
     height:0;
     clear:both;
     visibility:hidden;
 }
 .clearfix {
     /*IE6、7专有*/
     *zoom:1;
 }

 清除浮动——双伪元素清除浮动;
 .clearfix:before,.clearfix:after {
     content:"";
     display:table;
 }
 .clearfix:after {
    clear:both;
 }
 .clearfix {
     *zoom:1;
 }

CSS属性书写顺序,建议遵循以下顺序:
1.布局定位属性:display/position/float/clear/visibility/overflow;
2.自身属性:width/height/margin/padding/border/background;
3.文本属性:color/font/text-decoration/text-align/vertical-align/white-space/break-word;
4.其他属性(CSS3):content/cursor/border-radius/box-shadow/text-shadow/background:linear-gradient;


实际开发中,我们不会直接用链接a,而是用li包含li+a的做法;
li+a语义更清晰,有条理的列表;
如果直接用a,搜索引擎容易辨别为堆砌关键字嫌疑,影响网站排名;
nav导航栏可以不给宽度,将来可以继续添加其余文字;
因为导航栏里面文字不一样多,最好给链接a左右padding撑开盒子,而不是指定宽度;

浮动的盒子不会有外边距合并的问题;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值