【CSS基础学习笔记】选择器、元素样式、盒子模型

本文介绍了CSS的基础知识,包括选择器的使用,如标签选择器、多类名选择器、ID选择器和复合选择器;详细讲解了字体属性、文本属性、元素显示模式,如块元素、行内元素和行内块元素;还深入探讨了CSS盒子模型,涵盖边框、内边距和外边距。此外,文章还提到了一些实用技巧,如Emmet语法、元素显示模式转换和链接伪类选择器。

CSS是一种标记语言,负责网页的样式。

用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式.边距等)以及版面的布局和外观显示样式。

语法:写在<style></style>标签之中,<style></style>标签写在<head></head>标签之中。

组成部分:选择器、一条或多条声明

h1 {/*选择器*/
    color: red;/*声明*/
    font-size: 25px;
}

选择器

选择器包括基础选择器、复合选择器。

标签选择器:直接使用标签名作为选择器,可以改变此类标签的样式。

选择器(常用)

.class(例如.xxx)  选择class="xxx"的元素
#id(例如#xxx)     选择id为xxx的元素
*                  选择所有元素

多类名选择器:可以同时使用多个选择器。(实际操作中,便于抽取公共样式,易于修改,例如设置box类样式)

.acolor {
    color: green;
}
.asize {
    font-size: 20px;
}
/*同时使用多个类名*/
<div class="acolor asize">abc</div>

id选择器:以#定义,通过id调用,但只能调用一次。(常与js一起使用)

属性

字体属性

font-family: "Microsoft YaHei" //定义字体系列
font-size: 20px; //定义字体大小,标题标签比较特殊,需单独指定文字大小
font-weight: bold; //定义字体粗细,bold粗,lighter细,或直接输入数字font-weight: 700;(不带单位)
font-style: italic; //定义字体样式,斜体或正常体(normal)

复合属性

/*强制格式(不可变),size和family属性必须存在
font: font-style font-weight font-size/line-height font-family;*/
font: italic 700 16px 'Microsoft yahei';

文本属性

color: red; //修改文字颜色,或用十六进制、rgb代码
text-align: center; //设置文本水平对齐,左、右、居中对齐
text-decoration: none; //装饰文本,underline下划线、overline上划线、line-through删除线
text-indent: 2em; //首行缩进
line-height: 20px; //行间距(包括了文字高度,但文字的高度不会改变)

em:一个相对单位,为当前元素一个文字的大小。

css外部引入(可控制多个页面)

放在head标签中

emmet语法

用于提高html、css编写速度。

快速生成HTML结构语法:

.demo   按tab会生成  <div class="demo"></div>
#demo   按tab会生成  <div id="demo"></div>
​
.demo$*5   按tab会生成
<div class="demo1"></div>
<div class="demo2"></div>
<div class="demo3"></div>
<div class="demo4"></div>
<div class="demo5"></div>
​
div{abababa}   按tab会生成  <div>abababa</div>

快速生成css样式语法:

w100  按tab会生成  width: 100px;
tac  按tab会生成  text-align: center;
lh26  按tab会生成  line-height: 26px;

快速格式化代码:shift+alt+f

复合选择器

  • 由两个或多个基础选择器,通过不同的方式组合而成。

  • 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等。

后代选择器

可以选择父元素里面子元素。可以嵌套,选到孙子。

格式:父元素 子元素 {样式;}

<ol>
    <li>123456</li>
</ol>
<ul>
    <a>5566</a>
    <li>
        <a>987654</a>
    </li>
</ul>
<!--后代选择器,li标签是ol的后代-->
ol li {
    color: pink;<!--只有li标签里的内容会变成粉色-->
}
ul a {
    color: yellow;<!--所有a标签里的内容会变成黄色,包括孙子等后代-->
}
<!--只想选到孙子及以下的a标签-->
ul li a {
    color: grey;
}

可以用.class名或#id名代替元素名。

<ol class="nav">
    <li>123456</li>
</ol>
​
.nav li {
    color: blue;
}

子元素选择器

只能选择作为某元素的最近一级子元素。只能选儿子,不能选孙子。

格式:父元素 > 子元素 {样式;}

ol > li {
    color: blue;
}

并集选择器

可以选择多组标签同时为他们定义相同的样式。

通常用于集体声明。

由各选择器通过英文逗号连接而成,任何形式的选择器都可以作为并集选择器的一部分。

格式:元素1,元素2 {样式;}(一般竖着写)

div,
p{
    color: red;
}

链接伪类选择器

用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。

常用于链接。

用冒号(:)表示,比如:hover .:first-child。

a: link /*选择所有未被访问的链接*/
a: visited  /*选择所有已被访问的链接*/
a: hover    /*选择鼠标指针位于其上的链接(常用)*/
a: active   /*选择活动链接(鼠标按下未弹起的链接)*/
/*给一个链接样式,要求链接为红色无下划线,点击后变为灰色*/
a {
    color: red;
    text-decoration: none;/*链接自带的样式有下划线,若要去掉则需自行定义*/
}
a: visited {
    color: grey;/*访问过的链接变成灰色*
}

为了确保选择器生效,要按照顺序声明:link 、visited、hover 、active。

因为a链接在浏览器中具有默认样式,所以需要给链接单独指定样式。

:focus伪类选择器

用于选取获得焦点的表单元素。(例如点击输入框,输入框边框变色)

常用于表单。

格式:input:focus {样式;}

input:focus {
    color: green;
}

元素显示模式

HTML元素一般分为块元素和行内元素两种类型。

块元素

常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。

块级元素的特点:

  • 独占一行。

  • 高度、宽度、外边距以及内边距都可以控制。

  • 宽度默认是容器(父级宽度)的100%。

  • 是一个容器及盒子,里面可以放行内或者块级元素。

文字类的元素内不能使用块级元素。(例如<p>里面不能放<div>)
<h1>~<h6>也是文字类标签。

行内元素

常见的行内元素有<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等,其中<span>标签是最典型的行内元素。有的地方也将行内元素称为内联元素。

行内元素的特点∶

  • 相邻行内元素在一行上,一行可以显示多个。

  • 不可以直接设置高度、宽度。

  • 默认宽度就是它本身内容的宽度。

  • 行内元素只能容纳文本或其他行内元素。

链接里面不能再放链接。 特殊情况链接<a>里面可以放块级元素,但是给<a>转换一下块级模式最安全。

行内块元素

在行内元素中有几个特殊的标签<img/>、<input/>、<td>,它们同时具有块元素和行内元素的特点。

行内块元素的特点:

  • 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。

  • 默认宽度就是它本身内容的宽度(行内元素特点)。

  • 高度,行高、外边距以及内边距都可以控制(块级元素特点)。

元素显示模式转换

一个模式的元素需要另外一种模式的特性时使用。(例如想给行内元素设置高度时)

想增加一个链接的触发范围时,转化为块元素display: block;

<a href="#">这是链接</a>
/*转换为块元素*/
a {
    display: block;
}

转换为行内元素display: inline;

<div>这是块元素</div>
/*转换为行内元素*/
div {
    display: inline;
}

转换为行内块元素display: inline-block;

文字垂直居中

让文字的行高等于盒子的高度,就可以让文字在当前盒子内垂直居中。

div {
    height: 20px;
    line-height: 20px;
}

因为文字行高包括了文字本身的高度、上空隙、下空隙,上空隙和下空隙相等。当行高等于盒子高度时,盒子正好被文字行高填满,上空隙和下空隙不可见,文字居中。

元素样式

背景颜色

background-color属性指定元素的背景颜色。

取值为transparent或其他color,transparent为透明无色的。

透明度

opacity 属性指定元素的透明度。取值范围为 0.0 - 1.0。值越低,越透明。

div {
  background-color: green;
  opacity: 0.3;
}

使用 opacity属性为元素的背景添加透明度时,其所有子元素都继承相同的透明度。

若不想对子元素应用不透明度,则使用 RGBA颜色值。

RGBA 颜色值指定为:rgba(red, green, blue, alpha)。alpha 参数是介于 0.0(完全透明)和 1.0(完全不透明)之间的数字。

div {
  background: rgba(0, 128, 0, 0.3) /* 30% 不透明度的绿色背景 */
}

背景图像

background-image属性指定用作元素背景的图像。

background-image: url(图片地址路径);

默认情况下,图像会重复,以覆盖整个元素。

如果需要改变重复方式,可以使用background-repeat属性。 取值有repeat(默认) / no-repeat / repeat-x /repeat-y。

背景颜色和图片都加时,背景图片会盖在颜色上面。

background-position属性可以改变图片在背景中的位置。

background-position: x y;/*可以使用精确的xy坐标值或方位*/
/*方位取值:center、top、bottom、left、right*/
/*当第二个参数省略时,默认第二个参数为center*/
div {
  background-image: url("tree.png");
  background-position: right top;
}
/*使用精确的xy坐标值,当第二个参数省略时,默认第二个参数为center*/
div {
  background-image: url("tree.png");
  background-position: 20px 30px;
}

两种方式可以一起使用,为混合单位(强制了第一位是x轴,第二位是y轴)。

背景固定

background-attachment 属性指定背景图像是应该滚动还是固定的(不会随页面的其余部分一起滚动)。

常用于制作视差滚动效果。

取值:scroll(随内容对象滚动)或fixed(固定)

背景复合写法可以简化代码,格式:

background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;
/*例子*/
div {
    background: transparent url(image.jpg) repeat-y fixed top;
}

CSS特性

给相同选择器设置相同的样式时,样式就会覆盖(层叠)另一个冲突的样式。

层叠性主要解决样式冲突的问题。

层叠性原则:样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式(执行最后那个,前面的样式被覆盖)。

css中子标签会继承父标签的部分样式。

子元素可以继承父元素的样式( text-、font-、 line-这些元素开头的可以继承,以及color属性),高度、内外边距等无法继承。

<body>
    <div>111</div>
</body>
/*行高的继承*/
body {
    font: 12px/24px;/*设置字体为12px,行高为24px*/
}
/*行高可以用不带单位的数表示*/
body {
    font: 12px/1.5;/*设置字体为12px,行高为当前元素文字大小的1.5倍*/
}
div {
    font-size: 16px;/*div元素内字体大小为16排序,行高为16*1.5=24px*/
}

当同一个元素指定多个选择器,就会有优先级的产生。选择器相同,则执行层叠性。选择器不同,则根据选择器权重执行。

div {/*元素选择器*/
    color: red;
}
.nav {/*类选择器*/
    color: pink;
}
/*结果是为粉色,因为类选择器权重更高*/
/*若增加important,则结果为红色,因为important权重最高*/
div {
    color: red!important;
}

继承的权重为0。

<div id="father">
    <p>222</p>
</div>
/*css样式*/
#father{
    color: blue;
}
p {
    color: green;
}
/*结果为绿色,因为继承的蓝色权重为0,小于元素选择器*/

<a>链接标签有自带样式:蓝色、有下划线。

复合选择器会有权重的叠加。

CSS盒子模型

CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边框、外边距、内边距、和实际内容。

边框border

属性:边框粗细、边框样式、边框颜色

border-width: 5px;      //边框粗细
border-style: solid;    //边框样式,常用:solid为实线,dashed为虚线,dotted为点线。
border-color: black;    //边框颜色
/*复合写法*/
/*border: 粗细 样式 颜色;顺序无所谓*/
border: 2px solid red;
/*可修改边框单独的一边*/
border-left: 1px solid pink;

border-collapse属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框。

border-collapse: collapse;//表示相邻边框合并在一起,防止两个单元格边框相邻时,边框变粗

边框会增加盒子的实际大小,例如200px的盒子有5px的边框时,实际宽度为210px。

内边距padding

用于设置内容和边框之间的距离。

复合写法:

内边距会增加盒子的实际大小,例如200px的盒子有5px的内边距时,实际宽度为210px。

当盒子本身没有指定width/height属性时,padding不会撑开盒子大小。

外边距margin

用于控制盒子之间的距离。

外边距可以让块级盒子水平居中,但是必须满足两个条件:
1. 盒子必须指定了宽度(width )。
2. 盒子左右的外边距都设置为auto。(margin: auto;)
若要行内盒子和行内块盒子水平居中,需要为其父元素添加text-align: center;

外边距合并

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。(父元素和子元素哪个外边距大,执行哪个)

解决办法:

  • 可以为父元素定义上边框。(border: 1px solid transparent;)

  • 可以为父元素定义上内边距。

  • 可以为父元素添加overflow: hidden。

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

/*CSS第一行代码,后面再写样式覆盖*/
* {
    padding: 0;
    margin: 0;
}

行内元素设置上下内外边距时,需要先转换为块级或行内块元素。

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

shift+alt鼠标下拉可同时操作多行。

如何去掉li前面的符号:list-style: none;

圆角

border-radius: length;//length为圆的半径,数值越大,圆角弧度越明显
/*单个设置一个角时*/
border-top-left-radius: 30%;//可以是数值或百分比(百分之矩形高度)

盒子阴影

/*box-shadow: h-shadow v-shadow blur spread color inset;*/
box-shadow: 10px 10px 5px 6px rgb(0,0,0,0.3);(阴影默认为outset)

阴影不会占据空间,不会影响盒子排列。

文字阴影:text-shadow

/*box-shadow: h-shadow v-shadow blur color;*/
box-shadow: 10px 10px 5px black;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值