CSS 属性特性
继承性
CSS 的某些属性具备继承性,在元素上设置了这些属性,那么它的子元素也会继承这些属性。
常见的继承属性包括:
font-size字体大小font-family字体font-weight字体粗细line-height行高color前景色text-align文本对齐方式cursor鼠标样式font-style字体风格font-variant字体变形letter-spacing字符间距font字体
<style>
div {
font-size: 14px;
}
</style>
<div>
<p>我是 p 标签</p>
</div>TIP
继承的属性是计算值,而不是设置值。
使用 inherit 可以让元素继承父元素的属性。
<style>
div {
border: 1px solid #f00;
}
p {
border: inherit;
}
</style>
<div>
<p>我是 p 标签</p>
</div>层叠性
CSS 的属性具备层叠性,即多个选择器选中同一个元素,那么这些选择器的相同属性会互相覆盖,最终只有一个生效。
<style>
div {
color: red;
}
.box {
color: green;
}
.pink {
color: pink;
}
</style>
<div class="box pink">div tag</div>判断优先级的方法:
- 判断一:选择器的权重, 权重大的生效, 根据权重可以判断出优先级
- 判断二:先后顺序, 权重相同时, 后面设置的生效
选择器权重
为了方便比较 CSS 属性的优先级,可以给 CSS 属性所处的环境定义一个权重:
- !important:
10000 - 内联样式:
1000 - ID 选择器:
100 - 类选择器、属性选择器、伪类选择器:
10 - 标签选择器、伪元素选择器:
1 - 通配符选择器:
0
<style>
div {
color: red;
}
#box {
color: green;
}
.pink {
color: pink !important;
}
</style>
<div id="box" class="pink" style="color: #ff0aaa">div tag</div>元素类型
HTML 元素有很多,比如 h 元素、p 元素、div 元素、span 元素、img 元素、a 元素等等。
HTML 元素分为两类:
- 块级元素(block-level elements):独占父元素的一行
- 行内元素(inline-level elements):多个行内级元素可以在父元素的同一行中显示
修改元素类型
可以使用 display 属性修改元素的元素类型。
block:将元素设置为块级元素inline:将元素设置为行内元素inline-block:将元素设置为行内块元素flex: 将元素设置为弹性盒子元素none:将元素设置为不显示
<style>
/* 将 div 元素类型修改为 inline 行内元素 */
div {
display: inline;
}
</style>
<div>我是 div 元素</div>
<p>我是 p 元素</p>元素类型特点
block/inline-block 块级/行内块元素一般情况下可以包含其它任何元素(包括块级元素、行内级元素、inline-block 元素)。
TIP
特殊情况,
<p>元素不能包含其他块级元素inline 行内级元素(比如
<a>、<span>、<strong>等)一般情况下,只能包含行内级元素。
块级元素 block
- 元素独占一行
- 可以设置宽高,默认宽度为父元素的 100%,默认高度为元素内容的高度。
常见的块级元素包括:<div>、<p>、<h1>~<h6>、<ul>、<ol>、<li>、<form>、<header>、<footer>、<section>、<article>、<aside>、<nav>、<main> 等。
行内级元素 inline
- 元素不会独占一行,跟其他行内级元素在同一行显示
- 不可以随意设置宽高,默认宽高由内容决定。
常见的行内级元素包括:<span>、<a>、<input>、<select>、<textarea>、<button> 等。
常见的行内级伪元素包括:::before、::after 等。
行内块元素 inline-block
- 元素不会独占一行,跟其他行内级元素在同一行显示
- 可以设置宽高,默认宽高由内容决定。
弹性盒子元素 flex
flex 元素可以设置宽高,默认宽度为父元素的 100%,默认高度为元素内容的高度。
隐藏元素 none
none 元素不会显示,不占位置,不可以设置宽高。
元素隐藏方法
display
display: none 的特点:
不占位置
不可以设置宽高
<style>
/* 将 div 元素类型修改为 none 隐藏元素 */
div {
display: none;
}
</style>
<div>我是 div 元素</div>visibility
visibility: hidden 的特点:
会占位置
可以设置宽高
<style>
/* 将 div 元素类型修改为 hidden 隐藏元素 */
div {
visibility: hidden;
}
</style>
<div>我是 div 元素</div>TIP
visibility的默认值为 visible, 元素是可见的。
rgba
rgba(0, 0, 0, 0) 的特点:
rgba 的 a 设置的是 alpha 值, 可以设置透明度, 不影响子元素
<style>
/* 将 div 元素类型修改为 rgba 隐藏元素 */
div {
background-color: rgba(0, 0, 0, 0);
}
</style>
<div>我是 div 元素</div>opacity
opacity: 0 的特点:
设置整个元素的透明度, 会影响所有的子元素
会占据位置
<style>
/* 将 div 元素类型修改为 opacity 隐藏元素 */
div {
opacity: 0;
}
</style>
<div>我是 div 元素</div>TIP
opacity的默认值为 1, 元素是可见的。
overflow 溢出处理
overflow 用于控制内容溢出时的行为。
visible:默认值,内容不会被裁剪,会呈现在元素框之外hidden:内容会被裁剪,超出的部分会被隐藏scroll:内容会被裁剪,超出的部分会被隐藏,但是会添加滚动条auto:如果内容被裁剪,则会添加滚动条
<style>
div {
width: 200px;
height: 200px;
border: 1px solid #f00;
overflow: visible;
/* overflow: auto;*/
/* overflow: hidden; */
/* overflow: scroll; */
}
</style>
<div>
样式表层叠——简单的说,就是 CSS
规则的顺序很重要;当应用两条同级别的规则到一个元素的时候,写在后面的就是实际使用的规则。
下面的示例中,我们有两个关于
的规则。最后显示蓝色——这两个规则来自同一个源,且具有相同的元素选择器,有相同的优先级,所以顺序在最后的生效。
你好世界。
</div>