CSS(Part1~2)

Part 1

CSS简介

  • 结构(HTML)与样式(CSS)相分离

    • HTML局限性:丑,主要做结构,显示元素内容

    • CSS:美化

      • CSS是层叠样式表简称,有时称之为CSS样式表或级联样式表

      • CSS也是一种标记语言,主要设置HTML页面中的文本内容、图片外形、版面布局、外观显示。

  • CSS语法规范

    • 写在<head>里,用<style>

    • 两部分:选择器(HTML标签)以及一条或多条声明

    • 给谁改样式{改什么样式}

    • 属性和属性以“键值对”形式出现

    • 属性和属性值之间用“:”分开

    • 多个“键值对”之间用“;”区分

  • CSS代码风格

    • 样式格式书写

      • 紧凑格式

      • 展开格式

    • 样式大小写

      • 提倡小写

    • 空格规范

      • 属性值前冒号后,保留一个空格

      • 选择器和大括号中间保留一个空格

CSS基础选择器

  • 选择器的作用

    • 选择器(选择符),选择标签用的,选对人,做对事

  • 选择器分类

    • 基础选择器(由单个选择器组成的)

      • 标签选择器

        • HTML标签名作为选择器

        • 语法:

          • 标签名 {

            • 属性1: 属性值1;

            • 属性2: 属性值2;

          • ......

          • }

        • 作用:把某一类全部选出,不能差异化选择

      • 类选择器

        • 口诀:样式点定义,结构类(class)调用,一个或多个,开发最常用。

        • 作用:单独选择

        • 语法:

          • .类名 {

            • 属性1: 属性值1;

            • ......

          • }

          • <标签名 class='类名'>XXX</标签名>

        • 多类名:给一个标签指定多个类名

          • 多类名使用方式:调用多个类名中间要用空格分开

          • 多类名使用场景:相同样式放一个类,修改方便

      • id选择器(常和JS搭配)

        • 口诀:样式#定义,结构id调用,只能调用一次,别人切勿使用

        • 可为标有特定id的HTML元素指定特定样式

        • HTML元素以id属性来设置id选择器,CSS中id选择器以“#”来定义

        • 语法:

          • #id名 {

            • 属性1: 属性值1;

            • ......

          • }

          • <标签名 id='id名'>XXX</标签名>

      • 通配符选择器

        • 使用“*”定义,表示选取页面中所有元素(标签)

        • 语法:

          • * {

            • 属性1: 属性值1;

            • ...

          • }

        • 无需调用

        • 特殊情况使用,比如清楚所有的元素标签的内外边距

    • 复合选择器

CSS字体属性

  • 字体系列Fonts

    • font-family属性,设置字体系列

      • p {font-family:"微软雅黑";}

      • div {font-family: Arial,"Microsoft Yahei","微软雅黑";} //先看第一个字体有没有,没有再看下一个

      • 各个字体间用逗号分隔,多个单词组成的字体用引号包含,尽量使用系统自带字体

      • 常常直接给body指定字体

    • font-size属性,设置字体大小

      • p {

        • font-size: 20px;

      • }

      • px(像素),谷歌默认16px

      • 可以给body指定文字大小,标题标签特殊要单独指定

    • font-weight属性,设置字体粗细

      • normal(正常字体,400)、bold(粗体,700)、bolder、lighter

      • font-weight:bold;或font-weight:700;

    • font-style属性,设置字体样式、文本风格(正常/斜体)

      • p {

        • font-style: italic;

      • }

      • em {

        • font-style:normal;(让倾斜的字体不倾斜)

      • }

    • 字体font复合属性写法

      • 想要div文字变倾斜、加粗、字号16像素、微软雅黑

      • 普通写法:

      • <style>

        • div {

          • font-style: italic;

          • font-weight: 700;

          • font-size: 16px;

          • font-familt: "Microsoft yahei";

        • }

      • </style>

      • 如何复合属性简写:

      • body {

        • /*font: font-style font-weight font-size/line-height font-family;(严格顺序,空格隔开,不能省略加粗的)*/

        • font: italic 700 16px "Microsoft yahei";

      • } (可以和上面一样写在style的div里)

    • 字体属性总结

CSS文本属性

  • 定义文本Text外观

  • color属性,定义文本颜色

    • div {

      • color: red;

    • }

    • 表示:预定义颜色值(red),十六进制(#FF0000),RGB代码(rgb(255,0,0)或rgb(100%,0%,0%))

  • text-align属性,对齐文本,水平对齐方式

    • div {

      • text-align: center/left(默认)/right;

    • }

    • 本质是让盒子里面的文字水平移动

  • text-decoration属性,装饰文本(下划线、删除线、上划线)

    • div {

      • text-decoration: none(默认)/underline/overline/line-through;

    • }

    • 删除超链接下划线:

      • <head> {

        • <style> {

          • a {

            • text-decorate: none;

          • }

        • </style>

      • </head>

      • <body> {

        • <a href="#">超链接</a>

      • }

  • text-indent属性,文本缩进

    • 用来指定文本第一行缩进,通常将段落首行缩进

    • div {

      • text-indent: 32px;(也可以是负值,往左缩进)

    • }

    • em相对单位,当前元素(font-size)1个文字大小,如果当前元素没有设置大小,则会按照父元素的1个文字大小

    • p {

      • text-indent: 2em;

    • }

  • line-height行间距

    • p {

      • line-height: 26px;

    • }

    • 行间距:上间距+文本高度+下间距

    • 测量小工具:FSCapture.exe

  • CSS文本属性总结

CSS引入方式

  • 按照CSS样式书写位置或引入方式,CSS样式表分为三大类

    • 行内样式表(行内式)

      • 在元素标签内部的style属性中设定,适合修改简单样式

      • <div style="color: red;font-size: 12px;">XX</div>

      • 控制当前的标签设置样式

      • 没体现结构与样式分离,不推荐

    • 内部样式表(嵌入式)

      • 写到HTML页面内部,放到<style>中,一般在<head>中

      • 方便控制整个页面中的元素样式设置

      • 代码结构清晰,但并没实现结构与样式完全分离

      • 练习时常用

    • 外部样式表(链接式)

      • 实际开发都是外部样式表,适合样式多情况,样式单独写到CSS文件中,之后把文件引入HTML页面

      • 分布:1.新建CSS文件,把CSSD代码放入,此文件只有样式没有标签;2.在HTML页面中,使用<link>标签引入这个文件

      • <link rel="stylesheet" href="css文件路径">

    • CSS引入方式总结

综合案例-新闻界面

  • 制作页面步骤:1.搭建HTML结构页面;2.修改CSS样式

  • 实践过程中:

    • <hr>水平线标签,不常用

    • 想让图片居中对齐,则是让它的父亲p标签天街水平居中代码

Chrome调试工具

  • 打开调试工具

    • 打开Chrome游览器,按下F12或右键->检查

      • Elements元素一栏,左边HTML,右边CSS

  • 使用调试工具

    • 只是调试代码、检查错误,不会修改

    • 样式前有黄色叹号提示,则是样式属性书写错误

Part 2

Emmet语法

  • 语法前身是Zen coding,使用缩写,提高HTML、CSS编写速度,VSCode内部已经集成该语法

  • 快速生成HTML结构语法

    • 生成标签,写入标签名按tab键

    • 生成多个标签,用标签*数字

    • 父子关系的标签,用>,比如ul>li

    • 兄弟关系的标签,用+,比如div+p

    • 生成带有类名或id名字的,.demo或#two tab键

    • 生成的div类名有顺序的,可以用自增符号$

    • 生成的标签内部写内容,可以用{}

  • 快速生成CSS样式语法

    • 比如w200+tab,可以生成width: 200px;

    • 比如lh26+tab,可以生成line-height: 26px;

  • VSCode自动格式化代码

    • 管理->设置->文本编辑器->格式化->Format On Save

CSS复合选择器

  • 什么是复合选择器:建立在基础选择器上,对基本选择器进行组合形成。更准确更高效的选择目标元素(标签)。由两个或多个基础选择器,通过不同的方式组合而成。

  • 后代选择器(重要):

    • 又称包含选择器,可选择父元素里面子元素。写法是把外层标签写在前面,内层标签写在后面,中间用空格分隔。标签发生嵌套时,内层标签就成为外层标签的后代。

    • 层层查找,最终选择的是最后一个

    • 元素1 元素2 {样式声明}

    • <style>

      • ol li {

        • color: red;

      • }

    • </style>

    • 元素可以是任意基础选择器(举例)

    • <head>

      • <style>

        • .nav li a {

          • color: green;

        • }

      • </style>

    • </head>

    • <body>

      • <ul>

        • <li>我是ul的孩子</li>

        • <li><a href="#">不会变化的</a></li>

      • </ul>

      • <ul class="nav">

        • <li>我是ul的孩子</li>

        • <li><a href="#">不会变化的</a></li>

      • </ul>

    • </body>

  • 子选择器(重要):

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

    • 元素1>元素2{样式声明}

  • 并集选择器:

    • 可以选择多组标签,同时为它们定义相同样式。通常用于集体声明。

    • 元素1,元素2 {样式声明}

    • 任何形式的选择器都可以作为并集选择器的一部分(举例)

    • <head>

      • <style>

        • div,

        • p,

        • .pig li {

          • color: pink;

        • }

      • </style>

    • </head>

    • <body>

      • <div>熊大</div>

      • <p>熊二</p>

      • <ul class="pig"><li>佩奇</li><li>乔治</li></ul>

    • </body>

    • 约定的语法规范,并集选择器竖着写,最后一个不加逗号

  • 伪类选择器:

    • 用于向某些选择器添加特殊效果,或选择第n个元素

    • 用“:”表示,如:hover、:first-child

    • 链接伪类

      • a:link /*选择所有未被访问的链接*/

      • a:visited /*选择所有已被访问的链接*/

      • a:hover /*选择鼠标指针位于其上 的链接*/

      • a:active /*选择活动链接(鼠标按下未弹起的链接)*/

      • 举例:

      • <head>

        • <style>

          • a:link {

            • color: #333;

            • text-decorate: none;

          • }

          • a:visited {

            • color: orange;

          • }

          • a:hover {

            • color: skyblue;

          • }

          • a:active {

            • color: green;

          • }

        • </style>

      • </head>

      • <body>

        • <a href="#">佩奇</a>

      • </body>

      • 注意事项:

        • 按LVHA顺序声明:link-;visited-;hover-;active

        • a链接在游览器中具有默认样式,所以要单独指定

      • 链接伪类选择器实际开发中的写法:

        • 一般用不着四个都写(举例)

        • a {

          • color: #333;

          • text-decoration: none;

        • a:hover {

          • color: #369;

          • text-decoration: underline;

        • }

    • 结构伪类

  • :focus 伪类选择器用于获得焦点的表单元素。

    • 焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对于表单元素。

    • <head>

      • <style>

        • input:focus {

          • background-color: yellow;

          • color: red;

        • }

      • </style>

    • </head>

    • <body>

      • <input type="text">

      • <input type="text">

      • <input type="text">

    • </body>

  • 复合选择器总结

CSS的元素显示模式

  • 什么是元素的显示模式:

    • 作用:更好布局网页

    • 元素显示模式就是元素(标签)以什么方式进行显示

    • 比如<dic>自己占一行,比如一行可以放多个<span>

    • HTML元素一般分为块元素和行内元素

  • 块元素:

    • <div>是最典型的

    • 特点:

      • 独占一行

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

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

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

    • 注意:

      • 文字类的元素不能使用块级元素

        • <p>标签主要用于存放文字,因此<p>里不能放块级元素,特别是不能放<div>

        • 同理,<h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素

  • 行内元素

    • <span>最典型。有的地方称为内联元素

    • 特点:

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

      • 高、宽直接设置是无效的

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

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

    • 注意:

      • 链接内不能再放链接

      • 特殊情况<a>里可以放块级元素,但是给<a>转换一下块级模式最安全

  • 行内块元素

    • 几个特殊标签——<img/>、<input/>(表单)、<td>(单元格标签),同时具有块元素和行内元素的特点

    • 特点:

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

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

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

  • CSS元素显示模式总结

  • 元素显示模式转换

    • 简单理解,即一个模式的元素需要另外一种模式的特性

    • 比如想要增加链接<a>的触发范围

    • 转换为块元素:display: block;

    • 转换为行内元素:display: inline;

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

  • 一个小工具snipaste的使用

    • 强大的截图工具,也可以将图贴回到屏幕上

    • 常用快捷方式:

      • F1截图,同时测量大小,设置箭头,书写文字等

      • F3在桌置顶显示

      • 点击图片,alt可以取色(按下shift可以切换取色模式)

      • 按下esc取消图片显示

  • 简洁版小米侧边栏案例

    • 步骤:1.把链接a转换为块级元素,这样链接就可以单独占一行,并且有宽度和高度;2.鼠标经过a给链接设置背景颜色。

  • 单行文字垂直居中的原理

    • 小技巧:让文字行高(line-height)等于盒子的高度

    • 行高由三部分组成:上空隙+文字+下空隙

    • 行高小于盒子高度,文字偏上;大于,偏下

CSS的背景

  • 背景颜色background-color

    • background-color: transparent(透明) | color ;

  • 背景图片background-image

    • background-image: none | url(地址) ;

  • 背景平铺background-repeat

    • background-repeat: repeat | no-repeat | repeat-x | repeat-y ;

    • 页面元素既可以添加背景图片也可以添加背景颜色,只不过背景图片会压住背景颜色

  • 背景位置background-position

    • background-position: x y ;

    • x和y坐标可以使用方位名词或者精确单位

      • length:百分/由浮点数字和单位标识符组成的长度值

      • position:top/center/bottom/left/center/right 方位名词

    • 参数:

      • 参数是方位名词:

        • 则两个值前后顺序无关

        • 如果只指定一个,另一个省略,则第二个默认居中对齐

      • 参数是精度单位:

        • 第一个x坐标,第二个y坐标,严格顺序

        • 如果只指定一个数值,它一定是x坐标,另一个默认垂直居中

      • 参数是混合单位:

        • 第一个x坐标,第二个y坐标,严格顺序

  • 背景固定(背景附着)background-attachment

    • background-attachment: scroll | fixed(固定) ;

  • 背景复合写法background

    • 没有固定顺序,一般习惯:

      • background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置 ;(举例)

      • bsckground: black url(地址) no-repeat fixed center top ;

  • 背景颜色半透明

    • background: rgba(0,0,0,0.3) ;

      • 最后一个alpha透明度,取值范围0~1

      • 我们习惯把0.3的0省略,写成“.3”

    • 注意:背景半透明指盒子背景半透明,内容不受影响

    • CSS新增属性,IE9+版本游览器才支持

  • 背景总结

    • 实际开发常见于logo或装饰性的小图片或超大的背景图片,优点是非常便于控制位置。(精灵图也是一种运用场景)

  • 综合案例-五彩导航

CSS的三大特性

  • 层叠性

    • 相同选择器给设置相同样式不同值,覆盖(层叠)。主要解决样式冲突的问题。

    • 原则:

      • 就近原则。样式离结构近的被执行

      • 样式不同不会被覆盖

  • 继承性

    • 子标签继承父标签的某些样式,如文本颜色和字号

    • 简化代码,降低复杂性

    • text-、font-、line-开头的可继承,以及color属性

    • 行高的继承

      • body {

        • font: 12px(字体大小)/1.5(行高) Microsoft YaHei ;

      • }

      • 行高可以跟单位也可以不跟

      • 如果子元素没设置行高,则会继承父元素的行高为1.5

      • 此时子元素的行高是:当前子元素的文字大小*1.5

  • 优先级

    • 给同一个元素指定多个选择器,就会有优先级的产生

      • 选择器相同,则执行层叠性

      • 选择器不同,则根据选择器权重执行

        • 继承或通配符选择器 0,0,0,0

        • 元素选择器 0,0,0,1

        • 类选择器,伪类选择器 0,0,1,0

        • ID选择器 0,1,0,0

        • 行内样式style="" 1,0,0,0

        • !important重要的 无穷大(举例)

          • div {

            • color: pink!important;

          • }

    • 注意:

      • 权重是有4组数字组成,但不会有进位

      • 等级判断从左向右,数值相同的判断下一位

      • 简单记忆:继承和通配符权重为0,标签选择器为1,类(伪类)选择器为10,id选择器为100,行内样式表为1000,!important无穷大。

      • 记住,继承的权重是0!父元素再高,子元素也是0。

    • 权重的叠加

      • 如果是复合选择器,则会有权重叠加,需计算(举例)

      • ul li { /*权重 0,0,0,1+0,0,0,1=0,0,0,2*/

        • color: green;

      • }

      • li { /*权重 0,0,0,1*/

        • color: red;

      • }

      • 又比如:.nav li /*权重 0,0,1,0+0,0,0,1=0,0,1,1*/

      • 又比如:a:hover/*权重 标签+伪类 0,0,0,1+0,0,1,0

    • 权重两个练习题

CSS的注释


CSS(Part1~2)
http://localhost:8090//archives/css
作者
江敏婕
发布于
2024年09月30日
许可协议