目录
子元素可以继承父元素的样式(text-,font-,line-这些开头的可以继承,以及color属性)
高度、盒子模型的内外边距就不会继承
***行高的继承性
- body{
- font:12px/1.5 Microsoft YaHei;
- }
行高可以跟单位也可以不跟
如果子元素没有设置行高,则会继承父元素行高为1.5
此时子元素的行高是:当前子元素文字大小*1.5
body行高1.5这样写最大的优势就是里面子元素可以根据自己文字大小自动化调整行高
- <!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>
- <style>
- body {
- color: pink;
- font: 12px/1.5 'Microsoft YaHei'
- }
-
- div {
- /*子元素继承了父元素body的行高1.5*/
- /*就是当前元素文字大小font_size的1.5倍,所以当前div行高14*1.5=21*/
- font-size: 14px;
- }
-
- /*li没有指定文字大小 则会继承父亲的文字大小 body12px所有li的文字大小问12px,当前li的行高就是12*1.5=18px*/
- </style>
- </head>
-
- <body>
- <div>粉红色的回忆</div>
- <p>粉红色的回忆</p>
- <ul>
- <li>我没有指定文字大小</li>
- </ul>
- </body>
-
- </html>
- div {
- color:pink!important
- }
注意事项
- <head>
- <style>
- li {
- color:green;
- }
- /* li 的权重是 0,0,0,1 */
- ul li{
- color :red;
- }
- /* 复合选择器权重叠加,ul li权重 0,0,0,1 + 0,0,0,1 =0,0,0,2 */
- .nav li{
- color:pink;
- }
- /* .nav li 权重 0,0,1,0 + 0,0,0,1 = 0,0,1,1 */
- <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,2a:hover
---------------->0,0,1,1 /* 伪类选择器*/.nav a
-------------------->0,0,1,1小案例
- <head>
- <style>
- /*.nav li权重11*/
- .nav li {
- color: red;
- }
-
- /*需求把第一个小li颜色改为粉色加粗*/
- /*pink权重是10 .nav .pink权重是20*/
- .nav .pink {
- color: pink;
- font-weight: 700;
- }
- </style>
- </head>
-
- <body>
- <ul class="nav">
- <li class="pink">人生四大悲</li>
- <li>家里没宽带</li>
- <li>网速不够快</li>
- <li>手机没流量</li>
- </ul>
- </body>
目标
能改准确阐述盒子模型4个组成部分
利用边框复合写法给元素添加边框
计算盒子实际大小
利用盒子模型布局模块案例
给盒子设置圆角边框
给盒子添加阴影
给文字添加阴影
页面布局要学习三大核心
页面布局步骤
1.先准备好相关的网页元素,网页元素基本都是盒子
2.利用CSS设置好盒子样式,然后摆放到相应位置
3.往盒子里面装内容
盒子模型的组成:
border(边框)
content(内容)
padding(内边距)
margin(外边距)
CSS 边框属性允许你指定一个元素边框的样式和颜色
边框由三部分组成:边框宽度(粗细) 边框样式 边框颜色
boder-width边框的粗细,一般情况都用px
border-style solid实线边框 dashed虚线 dotted点线
简写:无顺序,通俗如下顺序
border : borde-width || border-style || border-color
boder:5px solid pink
边框分开写法
border-top:1px solid red 只设定上边框,其余同理
border-bottom下边框
左右一样的
border-collapse 属性控制浏览器绘制表格边框的方式,它控制相邻单元格的边框
border-coppapse
表格的细线边框
border-collapse : collapse;
table,td,th{
boder:1px solid pink
}
边框会额外增加盒子的实际大小,因此我们有两种方案解决:
padding 属性用于设置内边距,即盒子边框与内容之间的距离
给盒子指定padding之后,
1.内容和边框有了距离,添加了内边距
2.padding影响了盒子实际大小
也就是盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子
解决方案:如果保证盒子和效果图大小保持一致,则让width、height 减去多出来的内边距大小
新浪导航栏实例:
*1a标签转为行内块元素
*2padding指的左右内边距,撑开距离
- <!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>
- <style>
- .nav {
- height: 41px;
- border-top: 3px solid #ff8500;
- border-bottom: 1px solid #edeef0;
- background-color: #fcfcfc;
- line-height: 41px;
- }
-
- .nav a {
- display: inline-block;
- height: 41px;
- padding: 0 20px;
- font-size: 12px;
- color: #4c4c4c;
- text-decoration: none;
-
- }
-
- .nav a:hover {
- background-color: #eee;
- color: #ff8500;
- }
- </style>
- </head>
-
- <body>
- <div class="nav">
- <a href="#">新浪导航</a>
- <a href="#">手机新浪网</a>
- <a href="#">移动客户端</a>
- <a href="#">微博</a>
- <a href="#">三个字</a>
- </div>
- </body>
-
- </html>
margin
(外边距)属性用于设置外边距,即控制盒子和盒子之间的距离margin 简写方式代表的意义跟 padding 完全一致
外边距可以让块级盒子水平居中,但是必须满足两个条件
左右的外边距都设置为 auto 有三种写法:
注意:
以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align: center 即可。
使用 margin 定义块级元素的垂直外边距时,可能会出现外边距的合并。
主要有两种情况:
①相邻块元素垂直外边距的合并
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并。
②嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值
解决方案:
还有其他方法,比如浮动、固定、绝对定位的盒子不会有塌陷问题。后面会进行总结。
页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。
* { padding: 0;
margin: 0; }
注意:
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了
因为网页美工大部分效果图都是利用 PS(Photoshop)来做的,所以以后我们大部分切图工作都是在 PS 里面完成。
登录ps网页版即可
- <!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>
-
- <style>
- * {
- margin: 0;
- padding: 0;
- }
-
- body {
- background-color: #f3f6f3;
- }
-
- .box {
- width: 298px;
- height: 500px;
- background-color: #fff;
- margin: 100px auto;
- }
-
- .box img {
- /*图片和盒子占满*/
- width: 100%;
- }
-
- .review {
- height: 50px;
- font-size: 14px;
- /*这个段落没有width属性 所有padding不会撑开盒子的宽度*/
- padding: 0 28px;
- margin-top: 30px;
- }
-
- .appraise {
- font-size: 12px;
- color: #babebb;
- margin-top: 20px;
- padding: 0 28px;
- }
-
- .info {
- font-size: 14px;
- margin-top: 15px;
- padding: 0 28px;
- }
-
- .info h4 {
- display: inline-block;
- }
-
- .info em {
- font-style: normal;
- color: #e5e6e3;
- margin: 0 6px 0 15px;
- }
-
- a {
- color: #333;
- text-decoration: none;
- }
- </style>
- </head>
-
- <body>
- <div class="box">
- <img src="bg.png" alt="">
- <p class="review">
- 快递牛,整体不错蓝牙可以说秒懂。红米给力
- </p>
- <div class="appraise">
- 来着125327738的评价
- </div>
- <div class="info">
- <h4><a href="#">Redmi AirDots真无线蓝...</a></h4>
- <em>|</em>
- <span>99.9元</span>
- </div>
- </div>
- </body>
-
- </html>
shift+alt不放,鼠标连续下滑,再松开alt,输入“#”,即可多行同时输入
去掉 li 前面的小圆点
li { list-style: none; }
- <!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;
- }
-
- .box {
- width: 248px;
- height: 163px;
- border: 1px solid #ccc;
- margin: 100px auto;
- }
-
- .box1 {
- height: 32px;
- padding-left: 15px;
- border: 1px dotted #ccc;
- font-size: 14px;
- font-weight: 400;
- line-height: 32px;
- }
-
- /*去掉小圆点*/
- li {
- list-style: none;
- }
-
- a {
- font-size: 12px;
- color: #666;
- text-decoration: none;
- }
-
- a:hover {
- text-decoration: underline;
- }
-
- .box ul li {
- height: 23px;
- line-height: 23px;
- padding-left: 20px;
- }
-
- ul {
- margin-top: 7px;
- }
- </style>
-
- <body>
- <div class="box">
- <h3 class="box1">品优购快报</h3>
- <ul>
- <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>
border-radius 属性用于设置元素的外边框圆角
border-radius:length;
radius
半径(圆的半径) 原理:(椭)圆与边框的交集形成圆角效果CSS3 中新增了盒子阴影,我们可以使用 box-shadow 属性为盒子添加阴影。
box-shadow: h-shadow v-shadow blur spread color inset;
注意:
需求:文字经过时出现阴影
- .yinying:hover {
- box-shadow: 10px 10px 10px -4px rgba(0, 0, 0, .3)
- }
在 CSS3 中,我们可以使用 text-shadow 属性将阴影应用于文本。
text-shadow: h-shadow v-shadow blur color