资讯专栏INFORMATION COLUMN

前端技术之_CSS详解第三天

番茄西红柿 / 2602人阅读

摘要:前端技术之详解第三天二权重问题深入同一个标签,携带了多个类名,有冲突我是什么颜色我是什么颜色我是什么颜色我是什么颜色微软雅黑红色的。

 前端技术之_CSS详解第三天  

二、权重问题深入

2.1 同一个标签,携带了多个类名,有冲突:




    
    Document
    


    

我是什么颜色?

我是什么颜色?

1     

我是什么颜色?

2

我是什么颜色?

1     .spec2{
2     color:blue;
3     }
4     .spec1{
5     color:red;
6     }
7     

红色的。因为css中red写在后面。和在标签中的挂类名的书序无关,只和css的顺序有关:

2.2 !important标记




    
    Document
    


    

文字

1     
1 k:v !important;

来给一个属性提高权重。这个属性的权重就是无穷大。important是英语里面的“重要的”的意思。我们可以通过语法:

一定要注意语法:

正确的:

1 font-size:60px !important;

 错误的:

1 font-size:60px; !important;     → 不能把!important写在外面
1 font-size:60px important;      →  不能忘记感叹号

!important需要强调3点:

1) !important提升的是一个属性,而不是一个选择器

1     p{
2     color:red !important;   → 只写了这一个!important,所以就字体颜色属性提升权重
3     font-size: 100px ;      → 这条属性没有写!important,所以没有提升权重
     }
5     #para1{
6     color:blue;
7    font-size: 50px;
8     }
9     .spec{
10     color:green;
11     font-size: 20px;
12     }

 所以,综合来看,字体颜色是red(听important的);字号是50px(听id的);

2) !important无法提升继承的权重,该是0还是0

比如HTML结构:

1     
2

哈哈哈哈哈哈哈哈

3
1     div{
2     color:red !important;
3     }
4     p{
5     color:blue;

6     }

由于div是通过继承性来影响文字颜色的,所以!important无法提升它的权重,权重依然是0。




    
    Document
    


    

哈哈哈哈哈哈哈哈

CSS样式:

干不过p标签,因为p标签是实实在在选中了,所以字是蓝色的(以p为准)。

3)!important不影响就近原则




    
    Document
    


    
  • 猜猜我是什么颜色

 

如果大家都是继承来的,按理说应该按照“就近原则”,那么important能否影响就近原则呢?

答案是:不影响。远的,永远是远的。不能给远的写一个important,干掉近的。

! important做站的时候,不允许使用。因为会让css写的很乱。

现在,我们知道层叠性能比较很多东西:

选择器的写法权重,谁离的近,谁写在下面。

2.3 权重计算的总结

还要知道   ! important 的性质。

 


三、盒模型

3.1 盒子中的区域

 




    
    Document
    


    
文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字

一个盒子中主要的属性就5个:width、height、padding、border、margin。

width是“宽度”的意思,CSS中width指的是内容的宽度,而不是盒子的宽度。

height是“高度”的意思,CSS中height指的是内容的高度,而不是盒子的高度

padding是“内边距”的意思

border是“边框”

margin是“外边距”

盒模型的示意图:

 

代码演示:

 

 

这个盒子width:200px; height:200px; 但是真实占有的宽高是302*302。 这是因为还要加上padding、border。

宽度和真实占有宽度,不是一个概念!!




    
    Document
    


    
文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字
文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字

3.2 认识width、height

一定要知道,在前端开发工程师眼中,世界中的一切都是不同的:

比如丈量一个包子多宽?前端开发工程师,只会丈量包子馅:

 

 

丈量稿纸,前端开发工程师只会丈量内容宽度:

 

 

 

丈量人脸,只会丈量五官:

 

下面这两个盒子,真实占有宽高,完全相同,都是302*302:

1     .box1{
2     width: 100px;
3     height: 100px;
4     padding: 100px;
5     border: 1px solid red;
6     }
7 
8     .box2{
9     width: 250px;
10     height: 250px;
11     padding: 25px;
12     border:1px solid red;
13     }

这两个盒子的盒模型图,见下表:真实占有宽度=  左border  +  左padding  +  width  +  右padding  +  右border

答案(答案有无穷多种,我们只写其中三种):小练习,大家自己写三个402*402的盒子

1 .box1{
2     width: 400px;
3     height: 400px;
4     border: 1px solid red;
5 }
6 .box2{
7     width: 200px;
8     height: 200px;
9     border: 6px solid red;
10     padding: 95px;
11 }
12 .box3{
13     width: 0px;
14     height: 0px;
15     padding: 200px;
16     border: 1px solid red;
17 }

 这三个盒子的盒模型图:

如果想保持一个盒子的真是占有宽度不变,那么加width就要减padding。加padding就要减width。

3.3 认识padding

padding就是内边距。padding的区域有背景颜色,css2.1前提下,并且背景颜色一定和内容区域的相同。

也就是说,background-color将填充所有boder以内的区域。

 

padding是4个方向的,所以我们能够分别描述4个方向的padding。




    
    Document
    


    
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

方法有两种,第一种写小属性;第二种写综合属性,用空格隔开。




    
    Document
    


    
内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

小属性:

1 padding-top: 30px;
2 padding-right: 20px;
3 padding-bottom: 40px;
4 padding-left: 100px;

这种属性,就是复合属性。比如不写padding-left那么就是没有左内边距。top上、right右、bottom下、left左。

快捷键就是pdt、pdr、pdb、pdl 然后按tab。

综合属性:

如果写了4个值:

1 padding:30px 20px 40px 100px;

上、右、下、左 

 

 

空格隔开的,四个数字就是上、右、下、左。

也就是说,前端开发工程师眼中的顺序不一样。

老百姓:上下左右

强调开发工程师:上、右、下、左

如果只写3个值:

1 padding: 20px 30px 40px;

 上、右、下、??和右一样

 

 

如果只写2个值:

1 padding: 30px 40px;

 

也就是说, 

1 padding: 30px 40px;

 

 等价于:

1 padding-top: 30px;
2 padding-bottom: 30px;
3 padding-left: 40px;
4 padding-right: 40px;

要懂得,用小属性层叠大属性:

 对应的盒模型图:

1 padding: 20px;
2 padding-left: 30px;

下面的写法错误:

1 padding-left: 30px;
2 padding: 20px;

 不能把小属性,写在大属性前面。

下面的题,会做了,说明你听懂了:




    
    Document
    


    

题目1,说出下面盒子真实占有宽高,并画出盒模型图:

1     div{

2     width: 200px;

3     height: 200px;

4     padding: 10px 20px 30px;

5     padding-right: 40px;

6     border: 1px solid #000;

7     }

 

 

 真实占有宽度 = 200 + 20 + 40 + 1 + 1 = 262px

题目2,说出下面盒子真实占有宽高,并画出盒模型图:

1     div{
2     width: 200px;
3     height: 200px;
4     padding-left: 10px;
5     padding-right: 20px;
6     padding:40px 50px 60px;
7     padding-bottom: 30px;
8     border: 1px solid #000;
9     }

 

 

 padding-left:10px; 和padding-right:20px; 没用,因为后面的padding大属性,层叠掉了他们。

强调一点,padding-left 不是padding-left-width

1 padding-left:10px;  √
2 padding-left-width:30px; ×

第3题,我现在给你盒模型图,请写出代码,试着用最最简单的方法写

 

 

width:123px;
height:123px;
padding:20px 40px;
border:1px solid red;

第4题:

width:123px;
height:123px;
padding:20px;
padding-right:40px;
border:1px solid red;

一些元素,默认带有padding,比如ul标签。

 

 

所以,我们为了做站的时候,便于控制,总是喜欢清除这个默认的padding:

1     *{
2     margin: 0;
3     padding: 0;
4     }
1 body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{
2     margin:0;
3     padding:0
4 }

 *的效率不高,所以我们使用并集选择器,罗列所有的标签(不用背,有专业的清除默认样式的样式表,今后学习):

3.4 border

就是边框。边框有三个要素:粗细、线型、颜色。

颜色如果不写,默认是黑色。另外两个属性不写,要命了,显示不出来边框。




    
    Document
    


    
1 border: 1px dashed red;

所有的线型: 

 

 

比如,border:10px ridge red;  在chrome和firefox、IE中有细微差别:

 

 

如果公司里面的设计师,处女座的,追求极高的页面还原度,那么不能使用css来制作边框。

就要用到图片,就要切图了。所以,比较稳定的就几个:solid、dashed、dotted


border是一个大综合属性,

1 border:1px solid red;

border属性能够被拆开,有两大种拆开的方式:就是把4个边框,都设置为1px宽度、线型实线、red颜色。

1) 按3要素:border-width、border-style、border-color

2) 按方向:border-top、border-right、border-bottom、border-left




    
    Document
    


    

3要素拆开:

1 border-width:10px;    → 边框宽度
2 border-style:solid;     → 线型
3 border-color:red;      → 颜色。
1 border:10px solid red;

现在心里要明白,原来一个border是由三个小属性综合而成:等价于:

border-width  border-style   border-color。

如果某一个小要素后面是空格隔开的多个值,那么就是上右下左的顺序:

 

1 border-width:10px 20px;

2 border-style:solid dashed dotted;

3 border-color:red green blue yellow;

按方向来拆

1 border-top:10px solid red;

2 border-right:10px solid red;

3 border-bottom:10px solid red;

4 border-left:10px solid red;

 等价于

1 border:10px solid red;

按方向还能再拆一层,就是把每个方向的,每个要素拆开,一共12条语句:

1 border-top-width:10px;

2 border-top-style:solid;

3 border-top-color:red;

4 border-right-width:10px;

5 border-right-style:solid;

6 border-right-color:red;

7 border-bottom-width:10px;

8 border-bottom-style:solid;

9 border-bottom-color:red;

10 border-left-width:10px;

11 border-left-style:solid;

12 border-left-color:red;

 等价于

1 border:10px solid red;

工作中到底用什么?很简答:什么简单用什么?

 写法:

1 border:10px solid red;

2 border-right-color:blue;

写法:

1 border:10px solid red;

2 border-style:solid dashed;

border可以没有, 

1 border:none;

也可以调整左边边框的宽度为0:某一条边没有:

1 border-left: none;
1 border-left-width: 0;

四、标准文档流

宏观的讲,我们的web页面和photoshop等设计软件有本质的区别:web页面的制作,是个“流”,必须从上而下,像“织毛衣”。而设计软件,想往哪里画个东西,都能画。

我们要看看标准流有哪些微观现象:




    
    Document
    


    

人人人人 人人姚明人人人人人人人

1) 空白折叠现象:

比如,如果我们想让img标签之间没有空隙,必须紧密连接:

1 
2 
3 

2) 高矮不齐,底边对齐: 

3) 自动换行,一行写不满,换行写。

4.1 块级元素和行内元素




    
    Document
    


    

哈哈哈哈

嘻嘻嘻嘻

哈哈哈哈 嘻嘻嘻嘻

 

学习的初期,你就要知道,标准文档流等级森严。标签分为两种等级:

1) 块级元素

● 霸占一行,不能与其他任何元素并列

● 能接受宽、高

● 如果不设置宽度,那么宽度将默认变为父亲的100%。

2) 行内元素

● 与其他行内元素并排

● 不能设置宽、高。默认的宽度,就是文字的宽度。

HTML中,我们已经将标签分过类,当时分为了:文本级、容器级。

文本级:p、span、a、b、i、u、em

容器级:div、h系列、li、dt、dd

CSS的分类和上面的很像,就p不一样:

所有的文本级标签,都是行内元素,除了p,p是个文本级,但是是个块级元素。

所有的容器级标签都是块级元素。

 

4.2 块级元素和行内元素的相互转换

块级元素可以设置为行内元素




    
    Document
    


    
我是一个div
我是一个div

行内元素可以设置为块级元素




    
    Document
    


    点击我去网易

    我是一个span
    我是一个span


View Code
1     div{
2     display: inline;
4     width: 500px;
5     height: 500px;
6     }

inline就是“行内”。display是“显示模式”的意思,用来改变元素的行内、块级性质

一旦,给一个标签设置

1 display: inline;

● 此时这个div不能设置宽度、高度;那么,这个标签将立即变为行内元素。此时它和一个span无异:

● 此时这个div可以和别人并排了

同样的道理,

1     span{
2     display: block;
3     width: 200px;
4     height: 200px;
5 
6     }

让标签变为块级元素。此时这个标签,和一个div无异:“block”是“块”的意思

● 此时这个span能够设置宽度、高度

● 此时这个span必须霸占一行了,别人无法和他并排

● 如果不设置宽度,将撑满父亲

标准流里面限制非常多,标签的性质恶心。比如,我们现在就要并排、并且就要设置宽高。

所以,移民!脱离标准流!

css中一共有三种手段,使一个元素脱离标准文档流:

1) 浮动

2) 绝对定位

3) 固定定位

五、浮动

浮动是css里面布局用的最多的属性。




    
    Document
    


    
View Code

 

 

 

1     .box1{
2     float: left;
3     width: 300px;
4     height: 400px;
6     }
7     .box2{
8     float: left;
9     width: 400px;
10     height: 400px; 
12     }

 

两个元素并排了,并且两个元素都能够设置宽度、高度了(这在刚才的标准流中,不能实现)。 

浮动想学好,一定要知道三个性质。

5.1 浮动的元素脱标

证明1:




    
    Document
    


    
View Code

 

 

 

证明2:




    
    Document
    


    我是span
    我是span
    我是span
    我是span
    我是span

View Code

一个span标签不需要转成块级元素,就能够设置宽度、高度了。所以能够证明一件事儿,就是所有标签已经不区分行内、块了。也就是说,一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了。无论它原来是个div还是个span。

1     span{
2     float: left;
3     width: 200px;
4     height: 200px;
6     }

5.2 浮动的元素互相贴靠

 

如果有足够空间,那么就会靠着2哥。如果没有足够的空间,那么会靠着1号大哥。

如果没有足够的空间靠着1号大哥,自己去贴左墙。

右浮动:   float:right; 




    
    Document
    


    
1
2
3
View Code

 

 

 




    
    Document
    


    
1
2
3
View Code

 

5.3 浮动的元素有“字围”效果

 




    
                 
               
              

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2297.html

相关文章

  • 前端技术_CSS详解第四天

    摘要:前端技术之详解第四天一第三天的小总结盒模型,什么是盒子所有的标签都是盒子。如果不在标准流,比如盒子都浮动了,那么两个盒子之间是没有塌陷现象的盒子居中的值可以为,表示自动。前端技术之_CSS详解第四天 一、第三天的小总结 盒模型box model,什么是盒子?   所有的标签都是盒子。无论是div、span、a都是盒子。图片、表单元素一律看做文本。 盒模型有哪些组成:   width、hei...

    番茄西红柿 评论0 收藏0
  • 前端相关大杂烩

    摘要:希望帮助更多的前端爱好者学习。前端开发者指南作者科迪林黎,由前端大师倾情赞助。翻译最佳实践译者张捷沪江前端开发工程师当你问起有关与时,老司机们首先就会告诉你其实是个没有网络请求功能的库。 前端基础面试题(JS部分) 前端基础面试题(JS部分) 学习 React.js 比你想象的要简单 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 评论0 收藏0
  • 移动端布局与适配

    摘要:实战之微信钱包腾讯服务界面网格布局是让开发人员设计一个网格并将内容放在这些网格内。对于移动端适配,不同的公司不同的团队有不同的解决方案。栅格系统用于处理页面多终端适配的问题。 grid实战之微信钱包 腾讯服务界面 CSS3网格布局是让开发人员设计一个网格并将内容放在这些网格内。而不是使用浮动制作一个网格,实际上是你将一个元素声明为一个网格容器,并把元素内容置于网格中。 移动端页面适配—...

    Clect 评论0 收藏0
  • 精彩文章赏析 - 收藏集 - 掘金

    摘要:掘金原文地址译文出自掘金翻译计划译者请持续关注中文维护链接获取最新内容。由于以下的浏览器市场份额已逐年下降,所以对于浏览器技巧三视觉效果前端掘金揭秘学习笔记系列,记录和分享各种实用技巧,共同进步。 沉浸式学 Git - 前端 - 掘金目录 设置 再谈设置 创建项目 检查状态 做更改 暂存更改 暂存与提交 提交更改 更改而非文件 历史 别名 获得旧版本 给版本打标签 撤销本地更改... ...

    godiscoder 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<