文章目录
快报案例圆角边框:盒子阴影:文字阴影:浮动1.1 传统网页布局的三种方式1.2 标准流(普通流/文档流)1.3为什么需要浮动?1.4什么是浮动?1.5 浮动特性(重难点)1.6 浮动元素经常和标准流父级搭配使用案例:2.1常见网页布局及浮动元素注意的两点3.1为什么清除浮动3.2清除浮动本质3.3清除浮动3.4清除浮动方法4. 总结:快报案例
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><style>* {margin: 0;padding: 0;}.nav {width: 248px;height: 163px;border: 1px solid #ccc;margin: 100px auto;}li {list-style: none;}.nav .title {/* width: 248px; 不写宽度属性,盒子不会被撑开*/height: 32px;font-weight: 400;font-size: 14px;line-height: 32px;padding-left: 15px;border-bottom: 1px dotted #ccc;}.nav .content a {font-size: 12px;text-decoration: none;color: #666;}.nav .content a:hover {text-decoration: underline;}.nav li {height: 23px;/* 行高等于高度实现垂直居中 */line-height: 23px;margin-left: 20px;}.nav ul {margin-top: 7px;}</style><body><div class="nav"><h3 class="title">品优购快报</h3><ul class="content"><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】母亲节,健康好礼低至5折!</a></li><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】9.9元洗100张照片!</a></li><li><a href="#">【特惠】长虹智能空调立省1000</a></li></ul></div></body></html>
li { list-style: none; }
这个语句去除li前面的小圆点
结果:
圆角边框:
在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。
border-radius 属性用于设置元素的外边框圆角。
语法:
border-radius:length;
参数值可以为数值或百分比的形式如果是正方形
,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为50%
如果不是正方形,这种设置会生成一个圆角矩形
该属性是一个简写属性,可以跟四个值,分别代表左上角、右上角、右下角、左下角。分开写:border-top-left-radius
、border-top-right-radius
、border-bottom-right-radius
和
border-bottom-left-radius
.兼容性 ie9+ 浏览器支持, 但是不会影响页面布局,可以放心使用
盒子阴影:
CSS3 中新增了盒子阴影,我们可以使用 box-shadow 属性为盒子添加阴影。
语法:
box-shadow: h-shadow v-shadow blur spread color inset ;
<style>div {width: 200px;height: 200px;background-color: skyblue;box-shadow: 10px 10px 10px rgb(0, 0, 0, 0.3);}</style></head><body><div></div></body>
结果如下:
可以通过在浏览器中的“检查”
来查看更改选择器中的box-shadow
的参数来观察各参数的意义。
文字阴影:
语法:
text-shadow: h-shadow v-shadow blur color ;
浮动
1.1 传统网页布局的三种方式
网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。
CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序):
普通流(标准流)浮动定位
注意:实际开发中,一个页面基本都包含了这三种布局方式(后面移动端学习新的布局方式)
1.2 标准流(普通流/文档流)
所谓的标准流: 就是标签按照规定好默认方式排列。
块级元素会独占一行,从上向下顺序排列。
常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行。
常用元素:span、a、i、em等
标准流是最基本的布局方式。
1.3为什么需要浮动?
所谓的标准流: 就是标签按照规定好默认方式排列。
总结: 有很多的布局效果,标准流没有办法完成,此时就可以利用浮动
完成布局。 因为浮动可以改变元素标签默认的排列方式。
浮动最典型的应用
:可以让多个块级元素一行内排列显示。
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
1.4什么是浮动?
float
属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。
语法:
选择器 { float: 属性值; }
<style>* {margin: 0;padding: 0;}.left {width: 200px;height: 200px;float: left;background-color: skyblue;}.right {width: 200px;height: 200px;float: right;background-color: green;}</style></head><body><div class="left"></div><div class="right"></div></body>
实现两个盒子的左右对齐。
1.5 浮动特性(重难点)
加了浮动之后的元素,会具有很多特性,需要我们掌握的。
浮动元素会脱离标准流(脱标)。就像漂浮在标准流上面一样
设置了浮动(float)的元素最重要特性:
脱离标准普通流的控制(浮) 移动到指定位置(动), (俗称脱标)
浮动的盒子不再保留原先的位置
浮动的元素会一行内显示并且元素顶部对齐
如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列
注意: 浮动的元素是互相贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子, 多出的盒子会另起一行对齐。
浮动的元素会具有行内块元素的特性.
任何元素
都可以浮动。不管原先是什么模式的元素,添加浮动之后都具有行内块元素
相似的特性。
也就是说如果行内元素有了浮动,则不需要转换块级/行内块元素就可以直接给高度和宽度。
<style>/* 任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性。 */span,div {float: left;width: 200px;height: 100px;background-color: pink;}/* 如果行内元素有了浮动,则不需要转换块级\行内块元素就可以直接给高度和宽度 */p {float: right;height: 200px;background-color: purple;}</style></head><body><span>1</span><span>2</span><div>div</div><p>ppppppp</p></body>
p没有给出宽度,浮动之后,他的宽度由内容的宽决定。
如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是
添加浮动后,它的大小根据内容来决定
浮动的盒子中间是
没有缝隙
的,是紧挨着一起的
1.6 浮动元素经常和标准流父级搭配使用
为了约束浮动元素位置,我们页面布局一般采取的策略是:
先用标准流的父元素排列上下位置, 之后内部子元素采取浮动排列左右位置. 符合网页布局第一准侧.
案例:
网页布局第二准侧.
先设置盒子的大小, 之后设置盒子的位置.
<style>* {margin: 0;padding: 0;}li {list-style: none;}.box {width: 1226px;height: 285px;background-color: pink;margin: 0 auto;}.box li {width: 296px;height: 285px;background-color: skyblue;float: left;margin-right: 14px;}/* 小细节:最后一个盒子不需要外边距 *//* 这里必须写 .box .last 要注意权重的问题 20 */.box .last {margin-right: 0;}</style></head><body><ul class="box"><li>1</li><li>2</li><li>3</li><li class="last">4</li></ul></body>
2.1常见网页布局及浮动元素注意的两点
1. 浮动和标准流的父盒子搭配。
先用标准流的父元素排列上下位置, 之后内部子元素采取浮动排列左右位置
2. 一个元素浮动了,理论上其余的兄弟元素也要浮动。
一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题。
浮动的盒子只会影响(影响就是会压住后面的标准流)浮动盒子后面的标准流,不会影响(就是不压前面的盒子而是贴着显示)前面的标准流.
<style>.box {width: 1226px;height: 615px;background-color: pink;margin: 0 auto;}.left {float: left;width: 234px;height: 615px;background-color: purple;}.right {float: left;width: 992px;height: 615px;background-color: skyblue;}.right>div {float: left;width: 234px;height: 300px;background-color: pink;margin-left: 14px;margin-bottom: 14px;}</style></head><body><div class="box"><div class="left">左青龙</div><div class="right"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div></div></div></body>
大盒子嵌套两个盒子,在盒子里面添加浮动元素,其实也可以直接就一个大盒子(但是这样逻辑更清晰)
3.1为什么清除浮动
由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会影响下面的标准流盒子。
如图所示,子女跑了(子盒子浮动),空巢老人就空了(父级盒子没有高度了)
由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响
3.2清除浮动本质
清除浮动的本质是清除浮动元素造成的影响如果父盒子本身有高度,则不需要清除浮清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了3.3清除浮动
语法:
选择器{ clear:属性值;}
我们实际工作中, 几乎只用clear: both;
清除浮动的策略是: 闭合浮动.
3.4清除浮动方法
额外标签法也称为隔墙法,是 W3C 推荐的做法。
额外标签法会在浮动元素末尾添加一个空的标签。例如<div style=”clear:both”></div>
,或者其他标签如<br />
等)。
优点: 通俗易懂,书写方便
缺点: 添加许多无意义的标签,结构化较差
注意: 这个新增的盒子要求必须是块级元素不能是行内元素
父级添加 overflow 属性
可以给父级添加 overflow 属性,将其属性值设置为hidden
、auto
或scroll
。
子不教,父之过,注意是给父元素添加代码
优点:代码简洁
缺点:无法显示溢出的部分
父级添加after伪元素(实际在尾部添加一个hidden的空的块级标准流元素)
:after
方式是额外标签法的升级版。也是给父元素添加(添加一个类clearfix
)
<!-- 复制下面CSS代码调用就行 -->.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 {/* IE6、7 专有 */ *zoom:1;}
优点:代码更简洁
缺点:照顾低版本浏览器
4. 总结:
为什么需要清除浮动?
① 父级没高度。
② 子盒子浮动了。
③ 影响下面布局了,我们就应该清除浮动了。
清除浮动本质是?
清除浮动的本质是清除浮动元素脱离标准流造成的影响清除浮动策略是?
闭合浮动. 只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子.额外标签法?
隔墙法, 就是在最后一个浮动的子元素后面添加一个额外标签, 添加 清除浮动样式.
实际工作可能会遇到,但是不常用