【前端】CSS(上)

目录

1. CSS是什么?

2. 基本语法规范

3. 引入方式

3.1 内部样式表

3.2 行内样式表

3.3 外部样式

4. 代码风格

4.1 样式格式

4.2 样式大小写

4.3 空格规范

5. 选择器

5.1 选择器的功能

5.2 选择器的种类

5.2.1 基础选择器

5.2.2 符合选择器(选学)

6. 常用元素属性

6.1 字体属性

6.1.1 设置字体

6.1.2 文本属性

6.2 背景属性

6.2.1 背景颜色

6.2.2 背景图片

6.2.3 背景平铺

6.2.4 背景位置

6.2.5 背景尺寸

6.3 圆角矩形

6.3.1 基本用法

6.3.2 生成圆形

6.3.3 生成圆形矩形


1. CSS是什么?

层叠样式表(Cascading Style Sheets)。

CSS能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,能够做到页面的样式和结构分离。

2. 基本语法规范

选择器+{一条/N条声明}

  • 选择器决定针对谁修改(找谁)
  • 声明决定修改啥。(干啥)
  • 声明的属性是键值对。使用;区分键值对,使用:区分键和值。
<style>
    p {
        /* 设置字体颜色 */
        color: red;
        /* 设置字体大小 */
        font-size: 30px;
   }
</style>
<p>hello</p>

注意:

  • CSS要写到style标签中
  • style标签可以放到页面任意位置。一般放到head标签内。
  • CSS使用/**/作为注释。(使用ctrl+/快速切换)。

3. 引入方式

3.1 内部样式表

写在style标签中,嵌入到html内部。

理论上来说style放到html的哪里都行。但是一般都是放到head标签中。

优点:这样能够让样式和页面结构分享。

缺点:分离的还不够彻底。尤其是CSS内容多的时候。

前面写的代码主要都是使用了这种方式。实际开发中不常用。

PS:搜狗搜索中仍然保留这这种写法。

3.2 行内样式表

通过style属性,来指定某个标签的样式。

只适合于简单样式,只针对某个标签生效。

缺点:不能写太复杂的样式。

这种写法优先级较高,会覆盖其他的样式。

<style>
    div {
        color: red;
   }
</style>
<div style="color:green">想要生活过的去, 头上总得带点绿</div>

3.3 外部样式

实际开发中最常用的方式。

  1. 创建一个CSS文件。
  2. 使用link标签引入CSS。
<link rel="stylesheet" href="[CSS文件路径]">

创建demo.html

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外部样式</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div>上帝为你关上一扇门, 然后就去睡觉了</div>
</body>

创建style.css。

div {
    color: red;
}

注意:不要忘记link标签调用CSS,否则不生效。

优点:样式和结构彻底分离了。

缺点:收到缓存浏览器影响,修改之后不一定立刻生效。

关于缓存:

这是计算机中一种常见的提升性能的技术手段。

网页依赖的资源(图片/CSS/JS等)通常是从服务器上获取的,如果频繁的访问该网站,那么这些外部资源就没必要反复从服务器上获取,就可以使用缓存先存起来(就是存在本地磁盘上了)。从而提高访问效率。

可以通过ctrl+F5强制刷新页面,强制浏览器重新获取CSS文件。

4. 代码风格

4.1 样式格式

(1)紧凑风格

p { color: red; font-size: 30px;}

(2)展开风格(推荐)

p {
    color: red;
    font-size: 30px;
}
4.2 样式大小写

虽然CSS不区分大小写,我们开发时统一使用小写字母。

4.3 空格规范
  • 冒号后面带空格。
  • 选择器和{之间也有一个空格。

5. 选择器

5.1 选择器的功能

选中页面中指定的标签元素。

要先选中元素,才能设置元素的属性。

就好比SC2,War3这样的游戏,需要先选中单位,再指挥该单位行动。

5.2 选择器的种类

1.基础选择器:单个选择器构成的。

  • 标签选择器
  • 类选择器
  • id选择器
  • 通配符选择器

2.复合选择器:把多种基础选择器综合运用起来。

  • 后代选择器
  • 子选择器
  • 并集选择器
  • 伪类选择器。
5.2.1 基础选择器

一、标签选择器

特点:

  • 能快速为同一类型的标签都选择出来。
  • 但是不能差异化选择。
<style>
p {
    color: red;
}

div {
    color: green;
}

</style>

<p>咬人猫</p>
<p>咬人猫</p>
<p>咬人猫</p>
<div>阿叶君</div>
<div>阿叶君</div>
<div>阿叶君</div>

二、类选择器

特点:

  • 差异化表示不同的标签。
  • 可以让多个标签的都使用同一个标签。
<style>
    .blue {
        color: blue;
   }
</style>

<div class="blue">咬人猫</div>
<div>咬人猫</div

语法细节:

  • 类名用 . 开头的。
  • 下方的标签使用class属性来调用。
  • 一个类可以被多个标签使用,一个标签也能使用多个类(多个类名使用空格分隔,这种做法可以让代码更好复用)。
  • 如果是长的类名,可以使用 - 分隔。
  • 不要使用纯数字,或者中文,以及标签名来命名类名。

代码示例:使用多个类名。

注意:一个标签可以同时使用多个类名。

这样做可以把相同的属性提取出来,达到简化代码的效果。

<style>
 .box {
        width: 200px;
        height: 150px;
   }

    .red {
        background-color: red;
   }

    .green {
        background-color: green;
   }
</style>
<div class="box red"></div>
<div class="box green"></div>
<div class="box red"></div>

三、id选择器

和类选择器类似。

  • CSS中使用 # 开头表示id选择器。
  • id选择器的值和html中某个元素的id值相同。
  • html的元素id不必带 # 。
  • id是唯一的,不能被多个标签使用(是和类选择器最大的区别)
<style>
    #ha {
        color: red;
   }
</style>
<div id="ha">蛤蛤蛤</div>

类比:

姓名是类选择器,可以重复。

身份证号码是id选择器,是唯一的。

四、通配符选择器

使用 * 的定义,选取所有的标签。

* {
 color: red;
}

页面的所有内容都会被改成红色。

不需要被页面架构调用。

基础选择器小结

作用特点
标签选择器能选出所有相同的标签不能差异化选择
类选择器能选出一个或多个标签根据需求选择,最灵活,最常用
id选择器能选出一个标签同一个id在一个HTML中只能出现一次
通配符选择器选择所有标签特殊情况下使用
5.2.2 符合选择器(选学)

一、后代选择器

又叫包含选择器。选择某个父元素的某个子元素。

元素1 元素2 {样式声明}
  • 元素1和元素2要使用空格分隔。
  • 元素1是父级,元素2是子级,只选元素2,不影响元素1.

代码示例:把ol中的li修改颜色,不影响元素1。

<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
</ul>

<ol>
    <li>ddd</li>
    <li>eee</li>
    <li>fff</li>
</ol>

ol li {
    color: red;
}

代码示例:元素2不一定非是儿子,也可以是孙子。

<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li><a href="#">ccc</a></li>
</ul>

ul li a {
    color: yellow;
}
或者
ul a {
    color: yellow;
}

代码示例:可以是任意基础选择器的组合。(包括类选择器,id1选择器)

<ol class="one">
    <li>ddd</li>
    <li>eee</li>
    <li><a href="#">fff</a></li>
    <li><a href="#">fff</a></li>
    <li><a href="#">fff</a></li>
</ol>

.one li a {
    color: green;
}

二、子选择器

和后代选择器类似,但是只能选择子标签。

元素1>元素2 { 样式声明 }
  • 使用大于号分割。
  • 只选亲儿子,不选孙子元素。
<div class="two">
    <a href="#">链接1</a>
    <p><a href="#">链接2</a></p>
</div

后代选择器的写法,会把链接1和2都选中。

.two a {
    color: red;
}

子选择器的写法,只选链接1。

.two>a {
    color: red;
}

练习:

1.把以下代码中的“小猫”改成红色。

<div class="cat">
    <ul>
        <li><a href="#">小猫</a></li>
        <li><a href="#">小猫</a></li>
        <li><a href="#">小猫</a></li>
    </ul>
</div>

CSS结果:

.cat ul li a {
    color: red;
}

2.把以下代码中的“小猫”改成红色。

<div class="cat">
    <a href="#">小猫</a>
    <ul>
        <li><a href="#">小狗</a></li>
        <li><a href="#">小狗</a></li>
    </ul>
</div>

使用Emment快捷键生成上面的html代码:

.cat>a+ul>li*2>a

CSS结果:

.cat>a {
 color: red;
}

三、并集选择器

用于选择多组标签。(集体声明)

元素1, 元素2 { 样式声明 }
  • 通过逗号分隔等多个元素。
  • 表示同时选中元素1和元素2.
  • 任何基础选择器都可以使用并集选择器。
  • 并集选择器建议竖着写,每个选择器占一行。(最后一个选择器不能加逗号)。

代码示例:

<div>苹果</div>
<h3>香蕉</h3>
<ul>
    <li>鸭梨</li>
    <li>橙子</li>
</ul>

1.把苹果和香蕉颜色改成红色。

div, h3 {
    color: red;
}

2.把鸭梨和橙子也都一起改成红色。

div,
h3,
ul>li {
    color: red;
}

四、伪类选择器

(1)链接伪类选择器

a:link 选择未被访问过的链接
a:visited 选择已经被访问过的链接
a:hover 选择鼠标指针悬停上的链接
a:active 选择活动链接(鼠标按下了但是未弹起)

示例:

<a href="#">小猫</a>

a:link {
    color: black;
    /* 去掉 a 标签的下划线 */
    text-decoration: none;
}

a:visited {
    color: green;
}

a:hover {
    color: red;
}

a:active {
    color: blue;
}

如何让一个已经被访问过的链接恢复成未访问的状态?

清空浏览器历史记录即可。ctrl+shift+delete

注意事项:

  • 按照LVHA的顺序书写,例如把active拿到前面去,就会导致active失败。记忆规则“绿化”。
  • 浏览器的a标签都有默认样式,一般实际开发都需要单独制定样式。
  • 实际开发主要链接做一个样式,然后给hover做一个样式即可。link、visited、active用的不多。
a {
    color: black;
}
a:hover {
    color: red;
}

(2).force伪类选择器

选取获取焦点的input表单元素。

<div class="three">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
</div>

.three>input:focus {
    color: red;
}

此时,被选中的表单的字体就会变成红色。

复合选择器小结

选择器作用注意事项
后代选择器选择后代元素可以是孙子元素
子选择器选择子元素只能选亲儿子,不能选择孙子
并集选择器选择相同样式的元素更好的做到代码重用
链接伪类选择器选择不同状态的链接重点掌握a.hover的写法
:focurs伪类选择器选择被选中的元素重点掌握input:focus

6. 常用元素属性

6.1 字体属性
6.1.1 设置字体
body {
    font-family: '微软雅黑';
    font-family: 'Microsoft YaHei';
}
  • 字体名称可以用中文,但是不建议。
  • 多个字体之间使用逗号分隔。(从左到右查找字体,如果找都不到,就会使用默认字体)。
  • 如果字体名有空格,使用引号包裹。
  • 建议使用常见字体,否则兼容性不好。
<style>
    .font-family .one {
        font-family: 'Microsoft YaHei';
   }

    .font-family .two {
        font-family: '宋体';
   }
</style>
<div class="font-family">
    <div class="one">
       这是微软雅黑
    </div>
    <div class="two">
       这是宋体
    </div>
</div>

大小

p {
    font-size: 20px;
}
  • 不同浏览器默认字号不一样,最好给一个明确值。(chrome默认是16px)
  • 可以给body标签使用font-size。
  • 要注意单位px不要忘记。
  • 标题标签需要单独指定大小。

注意:实际上他设置的是字体中字符框的高度;实际的字符字形可能比这些框高或矮。

</style>
 .font-size .one {
        font-size: 40px;
   }
    
.font-size .two {
        font-size: 20px;
   }
</style>
<div class="font-size">
    <div class="one">
       大大大
    </div>
    <div class="two">
       小小小
    </div>
</div>

粗细

p {
 font-weight: bold;
    font-weight: 700;
}
  • 可以使用数字表示粗细。
  • 700 == bold,400是不变粗,==normal。
  • 取值范围是100 -> 900.
<style>
    .font-weight .one {
        font-weight: 900;
   }

    .font-weight .two {
        font-weight: 100;
   }
</style>
<div class="font-weight">
    <div class="one">
       粗粗粗
    </div>
    <div class="two">
       细细细
    </div>
</div>

文字样式

/* 设置倾斜 */
font-style: italic;
/* 取消倾斜 */
font-style: normal;

很少把某个文字变倾斜。

但是经常要把em/i改成不倾斜。

<style>
    .font-style em {
        font-style: normal;
   }
    .font-style div {
        font-style: italic;
   }
</style>
<div class="font-style">
    <em>
       放假啦
 </em>
    <div class="one">
       听说要加班
    </div>
</div>
6.1.2 文本属性

一、文本颜色

认识RGB

我们的显示器是由很多很多的“像素”构成的。每个像素视为一个点,这个点就能反映出一个具体的颜色。

我们使用R(red),G(green),B(blue)的方式表示颜色(色光三原色)。三种颜色按照不同的比例搭配,就能混合出各种五彩斑斓的效果。

针对计算机中RGB三个分量,分别使用一个字节表示(8个比特位,表示的范围是0-255,十六进制表示为00-FF)。

数值越大,表示该分量的颜色就越浓。255.255.255就表示白色;0.0.0就表示黑色。

设置文本颜色

color: red;
color: #ff0000;
color: rgb(255, 0, 0);

鼠标悬停在vscode的颜色上,会出现颜色选择器,可以手动调整颜色。

color属性值的写法:

  • 预定义的颜色值(直接是单词)
  • 【最常用】十六进制形式
  • RGB方式

十六进制形式表示颜色,如果两两相同,就可以用同一个表示。

#ff00ff = > #f0f

<style>
    .color {
        color: red;
        /* color: rgb(255, 0, 0); */
        /* color: #ff0000; */
   }
</style>
<div class="color">这是一段话</div>

二、文本对齐

控制文字水平方向的对齐。

不光能控制文本对齐,也能控制图片等元素居中或靠右。

text-align: [值];
  • center:居中对齐。
  • left:左对齐。
  • right:右对齐。
<style>
    .text-align .one {
        text-align: left;
   }
    .text-align .two {
        text-align: right;
   }
    .text-align .three {
        text-align: center;
}
</style>
<div class="text-align">
    <div class="one">左对齐</div>
    <div class="two">右对齐</div>
    <div class="three">居中对齐</div>
</div>

三、文本装饰

text-decoration: [值];

常用取值:

  • underline:下划线(常用)。
  • none:啥都没有,可以给a标签去掉下划线。
  • overline:上划线。【不常用】。
  • line-through:删除线(不常用)。
<style>
    .text-decorate .one {
        text-decoration: none;
   }

    .text-decorate .two {
        text-decoration: underline;
   }

    .text-decorate .three {
        text-decoration: overline;
   }

    .text-decorate .four {
        text-decoration: line-through;
   }
</style>
<div class="text-decorate">
    <div class="one">啥都没有</div>
    <div class="two">下划线</div>
    <div class="three">上划线</div>
    <div class="four">删除线</div>
</div >

四、文本缩进

控制段落的首行缩进(其他行不影响)

text-indent: [值];
  • 单位可以使用px或者em;
  • 使用em作为单位更好。1个em就是当前元素的文字大小。
  • 缩进可以是负的,表示往左缩进。(就会导致文字就冒出去了)。
<style>
    .text-indent .one {
        text-indent: 2em;
   }
    
    .text-indent .two {
        text-indent: -2em;
   }
</style>
<div class="text-indent">
    <div class="one">正常缩进</div>
    <div class="two">反向缩进</div>
</div>

行高

行高指的是上下文行之间的基线距离。

HTML中展示文字设计到这几个基准线:

  • 顶线
  • 中线
  • 基线(相当于英语四线格的倒数第二条线)
  • 底线

内容区:顶线和底线包裹的区域,即下图深灰色背景区域。

其实基线之间的距离 = 顶线间的距离 = 底线间的距离 = 中线间的距离

line-height: [值];

注意1:行高 = 上边距 + 下边距 +字体大小

上下边距是相等的,此处字体大小是16px,行高是40px,上下边距就分别是是12px。

<style>
    .line-height .one {
        line-height: 40px;
        font-size: 16px;
   }
</style>
<div class="line-height">
    <div>
       上一行
    </div>
    <div class="one">
       中间行
    </div>
    <div>
       下一行
    </div>
</div>

注意2:行高也可以取normal等值。

这个取决于浏览器的实现,chorme上的normal为21px

注意3:行高等与元素高度,就可以实现文字居中对齐。

<style>
    .line-height .two {
        height: 100px;
        line-height: 100px;
   }
</style>

<div class="line-height">
    <div class="two">
       文本垂直居中
    </div>
</div>

6.2 背景属性
6.2.1 背景颜色
background-color: [指定颜色]

默认是transparent(透明)的,可以通过设置颜色的方式修改。

<style>   
body {
        background-color: #f3f3f3;
   }

    .bgc .one {
        background-color: red;
   }

    .bgc .two {
        background-color: #0f0;
   }

    .bgc .three {
        /* 背景透明 */
        background-color: transparent;
   }
</style>
<div class="bgc">
    <div class="one">红色背景</div>
    <div class="two">绿色背景</div>
    <div class="three">透明背景</div>
</div>
6.2.2 背景图片
background-image: url(...);

比image更方便控制位置(图片在盒子中的位置)

注意:

  1. url不要遗漏。
  2. url可以是绝对路径,也可以是相对路径。
  3. url上可以加引号,也可以不加。
<style>
    .bgi .one {
        background-image: url(rose.jpg);
        height: 300px;
   }
</style>
<div class="bgi">
    <div class="one">背景图片</div>
</div>
6.2.3 背景平铺
background-repeat: [平铺方式]

重要取值:

  • repact:平铺
  • no-repact:不平铺
  • repeat-x:水平平铺
  • repeat-y:垂直平铺

默认是repeat。

背景颜色和背景图片可以同时存在。背景图片在背景颜色的正上方。

<style>
    .bgr .one {
        background-image: url(rose.jpg);
        height: 300px;
        background-repeat: no-repeat;
   }

    .bgr .two {
        background-image: url(rose.jpg);
        height: 300px;
        background-repeat: repeat-x;
   }

    .bgr .three {
        background-image: url(rose.jpg);
        height: 300px;
        background-repeat: repeat-y;
   }
</style>
<div class="bgr">
    <div class="one">不平铺</div>
    <div class="two">水平平铺</div>
    <div class="three">垂直平铺</div>
</div>
6.2.4 背景位置
background-position: x y;

修改图片的位置。

参数有三种风格:

  1. 方位名词:(top,left,right,bottom)。
  2. 精确单位:坐标或者百分比(以左上角为原点)。
  3. 混合单位:同时包含方位名词和精确单位。
<style>
    .bgp .one {
        background-image: url(rose.jpg);
        height: 500px;
        background-repeat: no-repeat;
        background-color: purple;

        background-position: center;
   }
</style>
<div class="bgp">
    <div class="one">背景居中</div>
</div>

注意:

  • 如果参数的两个值都是方位名词,则前后顺序无关(left和left top 同效 top)。
  • 如果只指定了一个方位名词,则第二个默认居中。(left则意味着水平居中,top意味着垂直居中)。
  • 如果参数是精确值,则第一个肯定是x,第二个肯定是y。(100,200意味着x为100,y为200)。
  • 如果参数是精确值,且只给了一个数值,则该数值一定是x坐标,另一个默垂直居中。
  • 如果参数是混合单位,则第一个值一定为x,第二个值为y坐标。(100 center表示横坐标为100,垂直居中)。
6.2.5 背景尺寸
background-size: length|percentage|cover|contain;
  • 可以填具体的数值,如 40px 60px表示宽度为40px,高度为60px。
  • 也可以填百分比;按照父元素的尺寸设置。
  • cover:把背景图像扩展到足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。
  • 把图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。
<style>
    .bgs .one {
        width: 500px;
        height: 300px;

        background-image: url(rose.jpg);
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
   }
</style>
<div class="bgs">
    <div class="one">背景尺寸</div>
</div>

注意体会contain和cover的区别。当元素为矩形(不是正方形)时,区别是很明显的。

contain:

cover:

6.3 圆角矩形

通过border-radius使边框带圆角效果

6.3.1 基本用法
border-radius: length;

length是内切圆的半径,数值越大,弧线越强烈。

<div>蛤蛤</div>
div {
    width: 200px;
    height: 100px;
    border: 2px solid green;
    border-radius: 10px;
}
6.3.2 生成圆形

让border-radius的值为正方形宽度的一半即可。

div {
    width: 200px;
    height: 200px;
    border: 2px solid green;
    border-radius: 100px;
    /* 或者用 50% 表示宽度的一半 */
    border-radius: 50%;
}
6.3.3 生成圆形矩形

让border-radius 的值为矩形高度的一半即可。

div {
    width: 200px;
    height: 100px;
    border: 2px solid green;
    border-radius: 50px;
}

展开写法

border-radius 是一个复合写法,实际上可以针对四个角分别设置。

border-radius:2em;

等价于

border-top-left-radius:2em;
border-top-right-radius:2em;
border-bottom-right-radius:2em;
border-bottom-left-radius:2em;
border-radius: 10px 20px 30px 40px;

等价于(按照顺时针排列)

border-top-left-radius:10px;
border-top-right-radius:20px;
border-bottom-right-radius:30px;
border-bottom-left-radius:40px;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值