H5C3基础学习总结之CSS三大特性

目录

CSS三大特性

层叠性

继承性

优先级

盒子模型

边框(border)

内边距(padding)

外边距(margin)

外边距典型应用

外边距合并

 嵌套块元素垂直外边距的塌陷

相邻块元素垂直外边距的合并

清除内外边距


CSS三大特性

CSS有三个非常重要的特性:层叠性、继承性、优先级

层叠性

层叠性是指当一个标签被设置了多个重复的样式的时候,一个属性会覆盖另外一个属性。

比如:先给div设置背景颜色为红色,然后设置背景颜色为粉红色,那么最终颜色可能为红色,也可能为粉红色(明显的两种颜色设置不能并立,所以只为其一,这里没给出确定答案是因为还要考虑“优先级”)

代码示例如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        div{
            background-color: red;
        }
        div{
            background-color: blue;
        }
    </style>
</head>
<body>
    <div>123</div>  <!-- 最终背景颜色是蓝色 -->
    <div style="background-color: green;">123</div>  <!-- 最终背景颜色是绿色 -->
</body>
</html>

结果:

继承性

现实中的继承:我们继承了父亲的姓名。

CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号等。(子承父业)

  • 恰当的使用继承可以简化代码,降低CSS样式的复杂性
  • 子元素可以继承父元素的样式(text-,fint-,line-这些元素开头的可以继承,以及color属性)

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        div{
            font-size:70px;
            background-color: pink;
            color:skyblue;
        }
    </style>
</head>
<body>
    <div>
        <p>p继承div的样式</p>
    </div>
</body>
</html>

结果:

优先级

选择器权重:

选择器

选择器权重
继承,通配符选择器*0,0,0,0
元素选择器0,0,0,1
类选择器,伪类选择器,属性选择器0,0,1,0
ID选择器0,1,0,0
行内样式 style=""1,0,0,0

!important(在需要添加强度的代码后面添加!important)

∞(最重要)

代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
        /* 从上到下,依次注释选择器来测试优先级 */
        div{
            color:green!important;
        }
        #id1{
            color:red;
        }
        .class{
            color: blue;
        }
        div{
            color:purple;
        }

    </style>
</head>
<body>
    <div>!import优先级</div>
    <div style="color:red">行内样式优先级</div>
    <div id="id1">id选择器优先级</div>
    <div class="c1">类选择器优先级</div>
    <div>标签选择器优先级</div>
</body>
</html>

结果:


盒子模型

​​​​​​盒子模型
  • Border(边框) - 围绕在内边距和内容外的边框。
  • Padding(内边距) - 清除内容周围的区域,内边距是透明的。
  • Margin(外边距) - 清除边框外的区域,外边距是透明的。
  • Content(内容) - 盒子的内容,显示文本和图像。

边框(border)

border可以设置元素的边框。边框有三部分组成:边框宽度、边框样式、边框颜色

语法:

border: border-width || border-style || border-color

属性作用
border-width定义边框粗细,单位为px
border-style

定义边框的样式

border-color定义边框颜色

其中盒子的四边都可以分开进行设置,代码示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title>
<style>
p {
/*分开设置*/
	border-top-style:dotted;
	border-right-style:solid;
	border-bottom-style:dotted;
	border-left-style:solid;
}
p.one {
/*合并设置*/
    border-style:solid;
    border-color:red;
}
</style>
</head>

<body>
<p>两个不同的边界样式。</p>
<p class="one">两个不同的边界样式。</p>
</body>
</html>

结果:

此外在盒子模型中,可以通过vorder-collapse设置表格的粗细边框。

语法:

border-collapse: collapse;

  • 表示相邻边框合并在一起,防止两个边框和在一起,使得边框变粗

内边距(padding)

当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充。

单独使用 padding 属性可以改变上下左右的填充。

padding属性可以有1~4个值。

值的个数作用
padding: 5px;

1个值,代表上下左右都为5像素的内边距;

padding: 5px 10px;

2个值,代表上下内边距是5像素,左右内边距是10像素;

padding: 5px 10px 20px;

3个值,代表上内边距5像素,左右内边距10像素,下内边距10像素;

padding: 5px 10px 20px 30px;4个值,内边距上5像素,右10像素,下20像素,左30像素。顺时针顺序

可能的值:

说明
length定义一个固定的填充(像素px,pt,em等)
%使用百分比值来定义填充

代码示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title>
<style>
p
{
	background-color:yellow;
}
p.padding
{
	padding-top:25px;
	padding-bottom:25px;
	padding-right:50px;
	padding-left:50px;
}
</style>
</head>

<body>
<p>这是一个没有指定填充边距的段落。</p>
<p class="padding">这是一个指定填充边距的段落。</p>
</body>

</html>

结果:

外边距(margin)

margin属性用于设置外边距,控制盒子与盒子之间的距离。

属性作用
margin-left左外边距
margin-right右外边距
margin-top上外边距
margin-bottom下外边距

可能的值:

说明
auto设置浏览器边距,这样设置,会依赖于浏览器
length定义一个固定的margin(使用像素px,pt,em等)
%定义一个使用百分比的边距

代码示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
<style>
p
{
	background-color:yellow;
}
p.margin
{
	margin-top:100px;
	margin-bottom:100px;
	margin-right:50px;
	margin-left:50px;
}
</style>
</head>

<body>
<p>这是一个没有指定边距大小的段落。</p>
<p class="margin">这是一个指定边距大小的段落。</p>
</body>

</html>

margin简写方式代表的意义和padding完全一致。

外边距典型应用

外边距可以让块级盒子水平居中,但是必须满足两个条件:

  1. 盒子必须设定了宽度
  2. 盒子左右外边距都设置为auto。

.header {width: 960px; margin: 0 auto;}

常见的写法,以下三种都可以:

  • margin-left:auto; margin-right: auto;
  • margin: auto;
  • margin: 0 auto;

外边距合并

使用margin定义块级元素的垂直外边距时,可能出现外边距的合并,如下图所示:

 嵌套块元素垂直外边距的塌陷

对于两个潜逃关系(父子关系)的块元素,父元素上有外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。

解决方案:

  1. 可以为父元素定义上边框
  2. 可以为父元素定义上内边框
  3. 可以为父元素添加:overflow:hidden

相邻块元素垂直外边距的合并

当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和。其结果是取两个值中较大者。

清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致,因此在布局之前,需要首先清楚网页的内外边距。

在CSS样式中书协一下代码:

* {
    /*清除内边距*/
    padding: 0;
    /*清除外边距*/
    margin: 0;
}

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿tu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值