最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

DAY 5

IT圈 admin 3浏览 0评论

DAY 5

努力不会骗人,坚持会有奇效

今天学习CSS三大特性/CSS盒子模型/PS基本操作


CSS三大特性

层叠性、继承性、优先级

1 层叠性

给相同选择器设置相同的样式,此时一个样式会覆盖另一个冲突的样式。层叠性主要可以解决样式冲突。

原则:

  1. 样式冲突,就近原则。哪个样式离结构近,就执行哪个;
  2. 样式不冲突的部分,不会被层叠。
 <title>CSS层叠性</title><style>div {color: pink;font-size: 12px;}div {color: green;}</style>
</head><body><div>长江后浪推前浪,一浪更比一浪强</div>
</body>

2 继承性

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

  1. 恰当使用继承可以简化代码
  2. 子元素继承父元素的样式(text-  font- line- 这些可以继承,color属性也可以)
 <title>CSS继承性</title><style>div {color: pink;font-size: 16px;}</style>
</head><body><div><p>龙生龙,凤生凤,老鼠的儿子会打洞</p></div>
</body>
  •  行高的继承:
  1. 行高可以跟单位也可以不跟单位;
  2. 子元素会继承父元素的行高为1.5
  3. 这个1.5 是当前元素文字大小 font-size 的1.5倍

 <title>行高的继承</title><style>body {color: pink;/* font: 12px/24px "microsoft yahei"; *//* 行高可以跟单位也可以不跟单位 */font: 12px/1.5 "microsoft yahei";}/* 子元素继承了父元素body的行高1.5 *//* 这个1.5 是当前元素文字大小 font-size 的1.5倍,即当前div的行高是21像素 */div {font-size: 14px;}p {font-size: 16px;}/* li 没有手动指定文字大小,文字大小会继承父亲,ul没有指定,body指定了,继承body *//* li 的行高是当前文字大小的1.5倍 */</style>
</head><body><div>胖胖的葡萄籽</div><p>胖胖的葡萄籽</p><ul><li>我没有指定文字大小</li></ul>
</body>

 3 优先级

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

  1. 选择器相同,就执行层叠性;
  2. 选择器不同,根据选择器权重执行。
选择器权重
继承或者*0,0,0,0,
元素选择器0,0,0,1
类选择器、伪类选择器0,0,1,0
ID选择器0,1,0,0
行内样式1,0,0,0
! important

  1. 权重有4组数字组成,但不会有进位
  2. ! important>行内样式>ID选择器>类选择器、伪类选择器>元素选择器>继承或者*(通配符选择器)
  3. 等级判断从左到右
  4. 简单记忆:继承或者*=0,元素选择器=1,类选择器、伪类选择器=10,ID选择器=100,行内样式=1000,! important=∞
  5. 继承的权重是0,不管父标签权重多大,子标签继承过来权重都是0
<title>CSS优先级</title><style>/* 元素选择器 */div {/* important权重最高 */color: pink ! important;}/* 类选择器 */.text {color: green;}/* ID 选择器 */#demo {color: red;}</style>
</head><body><!-- 行内样式表 --><div class="text" id="demo" style="color: purple;">你笑起来真好看</div>
</body>
  • 继承权重注意点:
 <title>继承权重注意点</title><style>#father {color: red;}p {color: green;}body {color: pink;}a {color: purple;}</style>
</head><body><!-- 虽然div 是ID选择器,但是p标签继承div,继承权重=0 元素p标签权重=1 --><!-- 不管父标签权重多大,继承过来权重都是0 --><div id="father"><p>你还是很好看</p></div><!-- a链接 浏览器默认指定样式为蓝色下划线 -- a{color:blue} --><a href="#">我是单独的样式</a>
</body>
  •  权重叠加

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

注意:如果10个标签选择器叠加,权重为0,0,0,10;权重虽然会叠加,但永远不会进位。

 <title>权重的叠加</title><style>/* li 权重=1 */li {color: red;}/* 复合选择器会有权重叠加  ul+li=1+1=2*/ul li {color: green;}/* 复合选择器会有权重叠加 类+元素=10+1=11 */.value li {color: pink;}</style>
</head><body><ul class="value"><li>葡萄籽</li><li>草莓籽</li><li>西瓜籽</li></ul>
</body>
  •  CSS权重练习:
<title>CSS权重练习1</title><style>li {color: pink;}.nav {color: red;}.nav li {color: green;}/* 把第一个小li 颜色改为 蓝色加粗 */.nav .demo {color: blue;font-weight: 700;}</style>
</head><body><ul class="nav"><li class="demo">苹果</li><li>橙子</li><li>猕猴桃</li><li>草莓</li></ul>
</body>


CSS盒子模型

页面布局三大核心:盒子模型浮动定位。

1 网页布局的过程:

  1. 准备好相关的网页元素,网页元素基本都是盒子box;
  2. 利用CSS设置好盒子样式,然后摆到相应位置;
  3. 往盒子里装内容。

2 盒子模型(box model)的组成:

 边框border、内边距padding、外边距margin、实际内容content

  •  边框border

border可以设置边框宽度边框样式边框颜色。 

border: border-width || border-style || border-color
 <title>盒子模型之边框border</title><style>div {width: 300px;height: 200px;/* 边框粗细 border-width 后面一般px */border-width: 5px;/* 实线边框 solid 用的最多 */border-style: solid;/* 虚线边框 dashed *//* border-style: dashed; *//* 点线边框  dotted *//* border-style: dotted; */border-color: pink;}</style>
</head><body><div></div>
</body>

border的复合写法: 

 <title>border的复合写法</title><style>div {width: 300px;height: 200px;/* 没有先后顺序,默认宽度样式 颜色 *//* border: 5px solid red; */border-top: 5px dashed pink;border-bottom: 5px dotted blue;border-left: 5px solid green;border-right: 5px solid black;}</style>
</head><body><div></div>
</body>

 表格的细线边框:控制相邻单元格的边框

border-collapse: collapse
  1. collapse单词是合并
  2. border-collapse: collapse; 表示相邻边框合并在一起

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

边框的宽度会叠加在本身盒子的外面,解决方案:

  1. 测量盒子时,不测边框;
  2. 如果测了边框,用width、height减去边框宽度。
  <title>边框会影响盒子的实际大小</title><style>/* 我们需要200×200的盒子,但是这个盒子有10像素的红色边框 */div {/* width: 200px;height: 200px; */width: 180px;height: 180px;background-color: pink;/* 边框的宽度会叠加在本身盒子的外面 */border: 10px solid red;}</style>
</head><body><div></div>
</body>

  • 内边距padding
  1. 内容和边框有了距离,添加了内边距;
  2. padding影响了盒子实际大小。

解决方案:让width和heigh减去多出来的内边距大小

 <title>内边距padding</title><style>div {width: 200px;height: 200px;background-color: pink;padding-left: 20px;padding-top: 50px;padding-right: 40px;}</style>
</head><body><div>盒子内容是content盒子内容是content盒子内容是content盒子内容是content</div>

 padding复合写法:上右下左

<title>内边距padding复合写法</title><style>div {width: 200px;height: 200px;background-color: greenyellow;/* 一个值————上下左右都有50px 的边距 *//* padding: 50px; *//* 2个值————上下边距是50px 的边距  左右是20px边距*//* padding: 50px 20px; *//* 3个值————上边距50px 左右边距20px 下边距30px *//* padding: 50px 20px 30px; *//* 4个值————上边距50px 右边距20px 左40px 下边距30px */padding: 50px 20px 40px 30px;}</style>
</head><body><div>我知道世界上最值得做的事就是不断学习</div>
</body>

 padding的好处:

每个盒子里的字数不一样多,我们可以不用给盒子宽度,直接给padding最合适。

 新浪导航案例:

 <title>新浪导航栏</title><style>.nav {height: 41px;line-height: 41px;background-color: #fcfcfc;border-top: 3px solid #ff8500;border-bottom: 1px solid #edeef0;}.nav a {height: 41px;padding: 0 20px;font-size: 12px;text-decoration: none;color: #4c4c4c;display: inline-block}.nav a:hover {color: #ff8500;background-color: #f3e1e1;}</style>
</head><body><div class="nav"><a href="#">新浪导航</a><a href="#">手机客户端</a><a href="#">微博</a><a href="#">新浪网</a></div>
</body>

 

 小米侧边栏案例:保持宽170px

 <title>小米侧边栏案例——padding影响盒子大小计算</title><style>a {width: 150px;height: 40px;line-height: 40px;background-color: rgb(184, 149, 109);font-size: 16px;display: block;text-decoration: none;color: rgb(255, 255, 255);padding: 0 0 0 20px;}a:hover {color: aqua;background-color: blanchedalmond;}</style>
</head><body><a href="#">手机 电话卡</a><a href="#">电视 盒子</a><a href="#">笔记本平板</a><a href="#">家电 插线板</a><a href="#">出行 穿戴</a>
</body>

如果盒子本身没有指定width/height,则padding不会撑开盒子大小 

<title>padding不撑开盒子</title><style>h1 {/* 没有指定宽度,h1块级元素 继承body的宽度,和浏览器一样宽 */height: 100px;/* 只要有width属性,加上padding一定会加内边距 */width: 100%;background-color: pink;/* 没有width属性时,高度增加了30+30,宽度没有变化 */padding: 30px;}div {width: 300px;height: 100px;background-color: gray;}div p {/* p块级元素 默认宽度是div的宽度300  padding 使高度加30+30=60 */padding: 30px;background-color: purple;}</style>
</head><body><h1></h1><div><p></p></div>
</body>
  • 外边距margin      

盒子与盒子之间的距离,有上下左右4个外边距控制距离。

<title>盒子模型之外边距margin</title><style>div {width: 200px;height: 200px;background: pink;/* 上下左右外边距都是20px *//* margin: 20px; */}/* .nav {margin-bottom: 20px;} *//* .demo {margin-top: 20px;} *//* .demo {margin: 20px 50px;} */.nav {margin: 30px 0 10px 50px;}</style>
</head><body><div class="nav">1</div><div class="demo">2</div><div>3</div>
</body>

外边距典型应用:块级盒子水平居中

  1. 盒子必须设置了宽度width;
  2. 把左右外边距设置为 auto。
 <title>margin之块级盒子水平居中</title><style>.header {width: 200px;height: 200px;background-color: pink;margin: 100px auto;}</style>
</head><body><div class="header"></div>
</body>

以上方法是让块级元素水平居中,

行内元素或行内块元素水平居中

给其父元素添加 text-align: center即可。

<title>行内元素和行内块元素水平居中</title><style>.header {width: 200px;height: 200px;background-color: pink;margin: 100px auto;/* 给其父元素添加 text-align: center即可 */text-align: center;line-height: 200px;}</style>
</head><body><div class="header"><span>里面的文字</span></div><div class="header"><img src="sprite.png"></div>
</body>

外边距合并:

  1. 相邻块元素垂直外边框合并;——只设置单个块元素的下外边距或上外边距
  2. 嵌套块元素垂直外边距的塌陷。——给父元素设置上边框/给父元素设置上内边距/给父元素添加overflow:hidden
<title>margin-嵌套块元素塌陷问题</title><style>.father {width: 400px;height: 400px;background-color: pink;margin-top: 50px;/* 给父元素设置上边框 *//* border: 1px solid transparent; *//* 给父元素设置上内边距 *//* padding: 1px; *//* 给父元素添加overflow:hidden  不会让盒子变大*/overflow: hidden;}.son {width: 200px;height: 200px;background-color: blue;/* 子元素设置上外边距后,带着父元素一起下来了,塌陷问题 */margin-top: 100px;}</style>
</head><body><div class="father"><div class="son"></div></div>
</body>

清除内外边距:

 <title>清除内外边距</title><style>/* 这句话也是我们CSS的第一行代码 */* {margin: 0;padding: 0;}span {background-color: palegoldenrod;/* 行内元素 只有左边和右边有margin值 上下是没有的 尽量只设置左右的*/margin: 20px;}</style>
</head><body>123<!-- 网页元素自身会携带不同的内外边距 --><ul><li>abcd</li></ul><span>行内元素尽量只设置左右的内外边距</span>
</body>


PS基本操作

  1. 文件——打开
  2. Ctrl+R,打开标尺,或者视图——标尺
  3. 点击标尺,把单位改成像素
  4. Ctrl+ +放大视图,Ctrl+-缩小视图
  5. 按住空格键,鼠标拖动视图
  6. 选区工具测量大小
  7. Ctrl+D取消选区

综合案例:小米产品栏

 <title>产品模块</title><style>* {margin: 0;padding: 0;}.box {width: 400px;height: 460px;background-color: rgb(252, 243, 243);text-align: center;margin: auto;}.review {font-weight: 400;margin: 20px auto;}.appraise {color: gray;font-size: 16px;margin: 10px auto;}.price {color: rgb(212, 93, 93);font-size: 22px;margin: 10px auto;}.info a {display: block;text-decoration: none;color: white;background-color: rgb(212, 93, 93);width: 155px;height: 42px;line-height: 42px;margin: 13px auto;font-size: 18px;}</style>
</head><body><div class="box"><img src="img.png"><h2 class="review">小米电视6 至尊版 65英寸</h2><div class="appraise">百级分区背光|双120Hz高刷|4.5GB+64GB</div><div class="price">&yen;7999</div><div class="info"><a href="#">立即购买</a></div></div>
</body>

 

<title>小米产品栏</title><style>* {margin: 0;padding: 0;}.box {width: 300px;height: 360px;background-color: aliceblue;margin: 50px auto;}img {width: 100%;}.review {height: 50px;font-size: 16px;padding: 0 20px;margin-top: 20px;}.appraise {height: 15px;color: #b0b0b0;font-size: 12px;padding: 0 20px;margin-top: 20px;}.info {font-size: 14px;padding: 0 20px;margin-top: 15px;}.price {color: orange;}.info p {display: inline-block;}.info em {font-style: normal;color: #b0b0b0;margin: 0 5px 0 10px;}.lian {color: black;text-decoration: none;}</style>
</head><body><div class="box"><img src="img.png"><p class="review">快递牛,整体不靠蓝牙可以秒连,红米给力</p><div class="appraise">来自于香蕉好难吃的评价</div><div class="info"><p><a href="#" class="lian"> REdmi area Airpods真无线...</a></p><!-- | --><em>|</em><span class="price">99.5元</span></div></div>
</body>

案例总结:

1 为什么布局要用不同的盒子,不全部用div?

标签都是有语义的,合理的地方应该用合理的标签,比如产品标题就用h 大量文字就用p 。

2 为什么用那么多类名?

类名就是给每个盒子起了个名字,可以更好地找到这个盒子,选取盒子方便,后期维护也方便

3 到底什么时候用margin,什么时候用padding?

大多数情况下两者可以混用,特殊情况选简单的那个(padding增加盒子高度,用margin)。

4 自己做没有思路?

布局有很多方式,可以有自己的风格。

多用辅助工具,PS,截图,屏幕画笔。

案例:快报模块

去除li前面的小圆点:

list-style: none;
<title>快报模板</title><style>* {margin: 0;padding: 0;}.box {width: 250px;height: 200px;border: #ccc solid 1px;margin: 50px auto;}.title {height: 30px;line-height: 30px;border-bottom: dotted #ccc 1px;font-weight: 400;font-size: 18px;padding-left: 15px;}li {/* 去掉li 前面的小圆点 */list-style: none;}.content li {font-size: 16px;padding-left: 25px;height: 30px;line-height: 30px;}ul {margin-top: 9px;}.box ul li a {color: #666;text-decoration: none;}</style>
</head><body><div class="box"><h3 class="title">品优购快报</h3><div class="content"><ul><li><a href="#">特惠 爆款耳机5折起</a></li><li><a href="#">9.9抢洗碗机</a></li><li><a href="#">母亲节,好物低至5折</a></li><li><a href="#">清仓大甩卖</a></li><li><a href="#">美的双开门电冰箱立省1000元</a></li></ul></div></div>
</body>

DAY 5

努力不会骗人,坚持会有奇效

今天学习CSS三大特性/CSS盒子模型/PS基本操作


CSS三大特性

层叠性、继承性、优先级

1 层叠性

给相同选择器设置相同的样式,此时一个样式会覆盖另一个冲突的样式。层叠性主要可以解决样式冲突。

原则:

  1. 样式冲突,就近原则。哪个样式离结构近,就执行哪个;
  2. 样式不冲突的部分,不会被层叠。
 <title>CSS层叠性</title><style>div {color: pink;font-size: 12px;}div {color: green;}</style>
</head><body><div>长江后浪推前浪,一浪更比一浪强</div>
</body>

2 继承性

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

  1. 恰当使用继承可以简化代码
  2. 子元素继承父元素的样式(text-  font- line- 这些可以继承,color属性也可以)
 <title>CSS继承性</title><style>div {color: pink;font-size: 16px;}</style>
</head><body><div><p>龙生龙,凤生凤,老鼠的儿子会打洞</p></div>
</body>
  •  行高的继承:
  1. 行高可以跟单位也可以不跟单位;
  2. 子元素会继承父元素的行高为1.5
  3. 这个1.5 是当前元素文字大小 font-size 的1.5倍

 <title>行高的继承</title><style>body {color: pink;/* font: 12px/24px "microsoft yahei"; *//* 行高可以跟单位也可以不跟单位 */font: 12px/1.5 "microsoft yahei";}/* 子元素继承了父元素body的行高1.5 *//* 这个1.5 是当前元素文字大小 font-size 的1.5倍,即当前div的行高是21像素 */div {font-size: 14px;}p {font-size: 16px;}/* li 没有手动指定文字大小,文字大小会继承父亲,ul没有指定,body指定了,继承body *//* li 的行高是当前文字大小的1.5倍 */</style>
</head><body><div>胖胖的葡萄籽</div><p>胖胖的葡萄籽</p><ul><li>我没有指定文字大小</li></ul>
</body>

 3 优先级

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

  1. 选择器相同,就执行层叠性;
  2. 选择器不同,根据选择器权重执行。
选择器权重
继承或者*0,0,0,0,
元素选择器0,0,0,1
类选择器、伪类选择器0,0,1,0
ID选择器0,1,0,0
行内样式1,0,0,0
! important

  1. 权重有4组数字组成,但不会有进位
  2. ! important>行内样式>ID选择器>类选择器、伪类选择器>元素选择器>继承或者*(通配符选择器)
  3. 等级判断从左到右
  4. 简单记忆:继承或者*=0,元素选择器=1,类选择器、伪类选择器=10,ID选择器=100,行内样式=1000,! important=∞
  5. 继承的权重是0,不管父标签权重多大,子标签继承过来权重都是0
<title>CSS优先级</title><style>/* 元素选择器 */div {/* important权重最高 */color: pink ! important;}/* 类选择器 */.text {color: green;}/* ID 选择器 */#demo {color: red;}</style>
</head><body><!-- 行内样式表 --><div class="text" id="demo" style="color: purple;">你笑起来真好看</div>
</body>
  • 继承权重注意点:
 <title>继承权重注意点</title><style>#father {color: red;}p {color: green;}body {color: pink;}a {color: purple;}</style>
</head><body><!-- 虽然div 是ID选择器,但是p标签继承div,继承权重=0 元素p标签权重=1 --><!-- 不管父标签权重多大,继承过来权重都是0 --><div id="father"><p>你还是很好看</p></div><!-- a链接 浏览器默认指定样式为蓝色下划线 -- a{color:blue} --><a href="#">我是单独的样式</a>
</body>
  •  权重叠加

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

注意:如果10个标签选择器叠加,权重为0,0,0,10;权重虽然会叠加,但永远不会进位。

 <title>权重的叠加</title><style>/* li 权重=1 */li {color: red;}/* 复合选择器会有权重叠加  ul+li=1+1=2*/ul li {color: green;}/* 复合选择器会有权重叠加 类+元素=10+1=11 */.value li {color: pink;}</style>
</head><body><ul class="value"><li>葡萄籽</li><li>草莓籽</li><li>西瓜籽</li></ul>
</body>
  •  CSS权重练习:
<title>CSS权重练习1</title><style>li {color: pink;}.nav {color: red;}.nav li {color: green;}/* 把第一个小li 颜色改为 蓝色加粗 */.nav .demo {color: blue;font-weight: 700;}</style>
</head><body><ul class="nav"><li class="demo">苹果</li><li>橙子</li><li>猕猴桃</li><li>草莓</li></ul>
</body>


CSS盒子模型

页面布局三大核心:盒子模型浮动定位。

1 网页布局的过程:

  1. 准备好相关的网页元素,网页元素基本都是盒子box;
  2. 利用CSS设置好盒子样式,然后摆到相应位置;
  3. 往盒子里装内容。

2 盒子模型(box model)的组成:

 边框border、内边距padding、外边距margin、实际内容content

  •  边框border

border可以设置边框宽度边框样式边框颜色。 

border: border-width || border-style || border-color
 <title>盒子模型之边框border</title><style>div {width: 300px;height: 200px;/* 边框粗细 border-width 后面一般px */border-width: 5px;/* 实线边框 solid 用的最多 */border-style: solid;/* 虚线边框 dashed *//* border-style: dashed; *//* 点线边框  dotted *//* border-style: dotted; */border-color: pink;}</style>
</head><body><div></div>
</body>

border的复合写法: 

 <title>border的复合写法</title><style>div {width: 300px;height: 200px;/* 没有先后顺序,默认宽度样式 颜色 *//* border: 5px solid red; */border-top: 5px dashed pink;border-bottom: 5px dotted blue;border-left: 5px solid green;border-right: 5px solid black;}</style>
</head><body><div></div>
</body>

 表格的细线边框:控制相邻单元格的边框

border-collapse: collapse
  1. collapse单词是合并
  2. border-collapse: collapse; 表示相邻边框合并在一起

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

边框的宽度会叠加在本身盒子的外面,解决方案:

  1. 测量盒子时,不测边框;
  2. 如果测了边框,用width、height减去边框宽度。
  <title>边框会影响盒子的实际大小</title><style>/* 我们需要200×200的盒子,但是这个盒子有10像素的红色边框 */div {/* width: 200px;height: 200px; */width: 180px;height: 180px;background-color: pink;/* 边框的宽度会叠加在本身盒子的外面 */border: 10px solid red;}</style>
</head><body><div></div>
</body>

  • 内边距padding
  1. 内容和边框有了距离,添加了内边距;
  2. padding影响了盒子实际大小。

解决方案:让width和heigh减去多出来的内边距大小

 <title>内边距padding</title><style>div {width: 200px;height: 200px;background-color: pink;padding-left: 20px;padding-top: 50px;padding-right: 40px;}</style>
</head><body><div>盒子内容是content盒子内容是content盒子内容是content盒子内容是content</div>

 padding复合写法:上右下左

<title>内边距padding复合写法</title><style>div {width: 200px;height: 200px;background-color: greenyellow;/* 一个值————上下左右都有50px 的边距 *//* padding: 50px; *//* 2个值————上下边距是50px 的边距  左右是20px边距*//* padding: 50px 20px; *//* 3个值————上边距50px 左右边距20px 下边距30px *//* padding: 50px 20px 30px; *//* 4个值————上边距50px 右边距20px 左40px 下边距30px */padding: 50px 20px 40px 30px;}</style>
</head><body><div>我知道世界上最值得做的事就是不断学习</div>
</body>

 padding的好处:

每个盒子里的字数不一样多,我们可以不用给盒子宽度,直接给padding最合适。

 新浪导航案例:

 <title>新浪导航栏</title><style>.nav {height: 41px;line-height: 41px;background-color: #fcfcfc;border-top: 3px solid #ff8500;border-bottom: 1px solid #edeef0;}.nav a {height: 41px;padding: 0 20px;font-size: 12px;text-decoration: none;color: #4c4c4c;display: inline-block}.nav a:hover {color: #ff8500;background-color: #f3e1e1;}</style>
</head><body><div class="nav"><a href="#">新浪导航</a><a href="#">手机客户端</a><a href="#">微博</a><a href="#">新浪网</a></div>
</body>

 

 小米侧边栏案例:保持宽170px

 <title>小米侧边栏案例——padding影响盒子大小计算</title><style>a {width: 150px;height: 40px;line-height: 40px;background-color: rgb(184, 149, 109);font-size: 16px;display: block;text-decoration: none;color: rgb(255, 255, 255);padding: 0 0 0 20px;}a:hover {color: aqua;background-color: blanchedalmond;}</style>
</head><body><a href="#">手机 电话卡</a><a href="#">电视 盒子</a><a href="#">笔记本平板</a><a href="#">家电 插线板</a><a href="#">出行 穿戴</a>
</body>

如果盒子本身没有指定width/height,则padding不会撑开盒子大小 

<title>padding不撑开盒子</title><style>h1 {/* 没有指定宽度,h1块级元素 继承body的宽度,和浏览器一样宽 */height: 100px;/* 只要有width属性,加上padding一定会加内边距 */width: 100%;background-color: pink;/* 没有width属性时,高度增加了30+30,宽度没有变化 */padding: 30px;}div {width: 300px;height: 100px;background-color: gray;}div p {/* p块级元素 默认宽度是div的宽度300  padding 使高度加30+30=60 */padding: 30px;background-color: purple;}</style>
</head><body><h1></h1><div><p></p></div>
</body>
  • 外边距margin      

盒子与盒子之间的距离,有上下左右4个外边距控制距离。

<title>盒子模型之外边距margin</title><style>div {width: 200px;height: 200px;background: pink;/* 上下左右外边距都是20px *//* margin: 20px; */}/* .nav {margin-bottom: 20px;} *//* .demo {margin-top: 20px;} *//* .demo {margin: 20px 50px;} */.nav {margin: 30px 0 10px 50px;}</style>
</head><body><div class="nav">1</div><div class="demo">2</div><div>3</div>
</body>

外边距典型应用:块级盒子水平居中

  1. 盒子必须设置了宽度width;
  2. 把左右外边距设置为 auto。
 <title>margin之块级盒子水平居中</title><style>.header {width: 200px;height: 200px;background-color: pink;margin: 100px auto;}</style>
</head><body><div class="header"></div>
</body>

以上方法是让块级元素水平居中,

行内元素或行内块元素水平居中

给其父元素添加 text-align: center即可。

<title>行内元素和行内块元素水平居中</title><style>.header {width: 200px;height: 200px;background-color: pink;margin: 100px auto;/* 给其父元素添加 text-align: center即可 */text-align: center;line-height: 200px;}</style>
</head><body><div class="header"><span>里面的文字</span></div><div class="header"><img src="sprite.png"></div>
</body>

外边距合并:

  1. 相邻块元素垂直外边框合并;——只设置单个块元素的下外边距或上外边距
  2. 嵌套块元素垂直外边距的塌陷。——给父元素设置上边框/给父元素设置上内边距/给父元素添加overflow:hidden
<title>margin-嵌套块元素塌陷问题</title><style>.father {width: 400px;height: 400px;background-color: pink;margin-top: 50px;/* 给父元素设置上边框 *//* border: 1px solid transparent; *//* 给父元素设置上内边距 *//* padding: 1px; *//* 给父元素添加overflow:hidden  不会让盒子变大*/overflow: hidden;}.son {width: 200px;height: 200px;background-color: blue;/* 子元素设置上外边距后,带着父元素一起下来了,塌陷问题 */margin-top: 100px;}</style>
</head><body><div class="father"><div class="son"></div></div>
</body>

清除内外边距:

 <title>清除内外边距</title><style>/* 这句话也是我们CSS的第一行代码 */* {margin: 0;padding: 0;}span {background-color: palegoldenrod;/* 行内元素 只有左边和右边有margin值 上下是没有的 尽量只设置左右的*/margin: 20px;}</style>
</head><body>123<!-- 网页元素自身会携带不同的内外边距 --><ul><li>abcd</li></ul><span>行内元素尽量只设置左右的内外边距</span>
</body>


PS基本操作

  1. 文件——打开
  2. Ctrl+R,打开标尺,或者视图——标尺
  3. 点击标尺,把单位改成像素
  4. Ctrl+ +放大视图,Ctrl+-缩小视图
  5. 按住空格键,鼠标拖动视图
  6. 选区工具测量大小
  7. Ctrl+D取消选区

综合案例:小米产品栏

 <title>产品模块</title><style>* {margin: 0;padding: 0;}.box {width: 400px;height: 460px;background-color: rgb(252, 243, 243);text-align: center;margin: auto;}.review {font-weight: 400;margin: 20px auto;}.appraise {color: gray;font-size: 16px;margin: 10px auto;}.price {color: rgb(212, 93, 93);font-size: 22px;margin: 10px auto;}.info a {display: block;text-decoration: none;color: white;background-color: rgb(212, 93, 93);width: 155px;height: 42px;line-height: 42px;margin: 13px auto;font-size: 18px;}</style>
</head><body><div class="box"><img src="img.png"><h2 class="review">小米电视6 至尊版 65英寸</h2><div class="appraise">百级分区背光|双120Hz高刷|4.5GB+64GB</div><div class="price">&yen;7999</div><div class="info"><a href="#">立即购买</a></div></div>
</body>

 

<title>小米产品栏</title><style>* {margin: 0;padding: 0;}.box {width: 300px;height: 360px;background-color: aliceblue;margin: 50px auto;}img {width: 100%;}.review {height: 50px;font-size: 16px;padding: 0 20px;margin-top: 20px;}.appraise {height: 15px;color: #b0b0b0;font-size: 12px;padding: 0 20px;margin-top: 20px;}.info {font-size: 14px;padding: 0 20px;margin-top: 15px;}.price {color: orange;}.info p {display: inline-block;}.info em {font-style: normal;color: #b0b0b0;margin: 0 5px 0 10px;}.lian {color: black;text-decoration: none;}</style>
</head><body><div class="box"><img src="img.png"><p class="review">快递牛,整体不靠蓝牙可以秒连,红米给力</p><div class="appraise">来自于香蕉好难吃的评价</div><div class="info"><p><a href="#" class="lian"> REdmi area Airpods真无线...</a></p><!-- | --><em>|</em><span class="price">99.5元</span></div></div>
</body>

案例总结:

1 为什么布局要用不同的盒子,不全部用div?

标签都是有语义的,合理的地方应该用合理的标签,比如产品标题就用h 大量文字就用p 。

2 为什么用那么多类名?

类名就是给每个盒子起了个名字,可以更好地找到这个盒子,选取盒子方便,后期维护也方便

3 到底什么时候用margin,什么时候用padding?

大多数情况下两者可以混用,特殊情况选简单的那个(padding增加盒子高度,用margin)。

4 自己做没有思路?

布局有很多方式,可以有自己的风格。

多用辅助工具,PS,截图,屏幕画笔。

案例:快报模块

去除li前面的小圆点:

list-style: none;
<title>快报模板</title><style>* {margin: 0;padding: 0;}.box {width: 250px;height: 200px;border: #ccc solid 1px;margin: 50px auto;}.title {height: 30px;line-height: 30px;border-bottom: dotted #ccc 1px;font-weight: 400;font-size: 18px;padding-left: 15px;}li {/* 去掉li 前面的小圆点 */list-style: none;}.content li {font-size: 16px;padding-left: 25px;height: 30px;line-height: 30px;}ul {margin-top: 9px;}.box ul li a {color: #666;text-decoration: none;}</style>
</head><body><div class="box"><h3 class="title">品优购快报</h3><div class="content"><ul><li><a href="#">特惠 爆款耳机5折起</a></li><li><a href="#">9.9抢洗碗机</a></li><li><a href="#">母亲节,好物低至5折</a></li><li><a href="#">清仓大甩卖</a></li><li><a href="#">美的双开门电冰箱立省1000元</a></li></ul></div></div>
</body>

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论