跟着pink老师前端入门教程-day06

十一、CSS 的背景

通过CSS背景属性,可以给页面元素添加背景样式

背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。

11.1 背景颜色

background-color 属性定义了元素的背景颜色

一般情况下元素背景颜色默认值是transparent(透明),也可以手动指定背景颜色为透明色

html 复制代码
background-color:颜色值;

11.2 背景图片

background-image 属性描述了元素的背景图像。实际开发常见于logo或者一些装饰型的小图片或超大的背景图片,优点是便于控制位置

语法:background-image : none | url (url)

注意:背景图片后面的地址,不要忘记加URL,同时里面的路径不要加引导

11.3 背景平铺

background-repeat 属性 对背景图像进行平铺

语法:background-repeat: repeat | no-repeat | repeat-x | repeat-y

11.4 背景图片位置

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

语法:background-position: x y;

参数代表的意思:x坐标和y坐标。可以使用方位名词或精确单位

  1. 参数是方位名词

如果指定的两个值都是方位名词,则两个值前后顺序无关,比如left top和top left效果一致

如果只指定了一个方位名词,另一个值省略,则第二个值默认居中对齐

html 复制代码
    <style>
        div {
            width: 2900px;
            height: 1900px;
            background-image: url(./壁纸.jpg);
            background-color: palegoldenrod;
            background-repeat: no-repeat;
            /* background-position:方位名词 */
            /* background-position: center top; */
            /* background-position: right center; */
            /* 如果方位名词是right center 和center right 效果是等价的,跟顺序没有关系 */
            /* 此时 水平一定是靠右侧对齐 第二个参数省略y 轴是垂直居中显示的 */
            /* background-position: right; */
            /* 此时 第一个参数一定是top y轴 顶部对齐 第二个参数省略x轴是水平居中显示的 */
            /* background-position: top; */
        }
    </style>
  1. 参数是精确单位

如果参数值时候精确单位,那么第一个肯定是x坐标,第二个肯定是y坐标

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

html 复制代码
    <style>
        div {
            width: 2900px;
            height: 1900px;
            background-image: url(./壁纸.jpg);
            background-color: palegoldenrod;
            background-repeat: no-repeat;
            /* background-position: 精确单位; */
            /* 25px 50px; x轴一定是25,y轴一定是50 */
            /* background-position: 25px 50px; */
            /* 果只指定一个数值,那该数值一定是 x 坐标,另一个默认垂直居中 */
            /* background-position: 25px; */
        }
    </style>
  1. 参数是混合单位

如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标

html 复制代码
    <style>
        div {
            width: 2900px;
            height: 1900px;
            background-image: url(./壁纸.jpg);
            background-color: palegoldenrod;
            background-repeat: no-repeat;
            /* background-position: 混合单位; */
            /* 20px center;第一个值是 x 坐标,第二个值是 y 坐标 等价于 background-position: 20px; */
            /* background-position: 20px center; */
            /* center 20px; 水平是居中对齐,垂直是20 */
            background-position: center 20px;
        }
    </style>

11.5 背景图像固定

background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动。

background-attachment 后期可以制作视差滚动的效果

语法:background-attachment : scroll(默认) | fixed

11.6 背景复合写法

背景属性合并简写在同一属性background中,书写顺序一般习惯约定顺序为:

background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;

html 复制代码
    <style>
        div {
            /*
            width: 2900px;
            height: 1900px;
            background-image: url(./壁纸.jpg);
            background-color: palegoldenrod;
            background-repeat: no-repeat;
            */
            /* 复合背景图片属性 */
            background: black url(./壁纸.jpg) no-repeat fixed center;
        }
    </style>

11.7 背景色半透明

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

注意:

最后一个参数是alpha透明度,取值范围为0~1之间

习惯把0.3的0省略掉,写成background:rgba(0, 0, 0, .3);

背景半透明是指盒子背景半透明,盒子里面的内容不受影响

CSS3新增属性,是IE9+ 版本浏览器才支持的,实际开发不太关注兼容性写法,可放心使用。

11.8 总结

十二、CSS 的三大特性

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

12.1 层叠性

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

层叠性原则:

样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式

样式不冲突,不会层叠

CSS层叠性口诀:长江后浪推前浪,前浪死在沙滩上

12.2 继承性

CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号,简单理解:子承父业

恰当地使用继承可以简化代码,降低CSS样式的复杂性

子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承,以及color属性)

继承性口诀:龙生龙,凤生凤,老鼠生的孩子会打洞

行高的继承性注意点:

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

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

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

body行高1.5 该写法的最大优势是:里面的子元素根据自己文字大小自动调整行高

12.3 优先级

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

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

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

注意:

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

  2. 可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器以此类推

  3. 等级判断从左向右,如果某一位数值相同,则判断下一位数值

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

  5. 继承的权重是0,若该元素没有直接选中不管父元素权重多高,子元素得到的权重都是0

权重叠加:如果是复合选择器,则会有权重叠加,需要计算权重

div ul li ------> 0,0,0,3

.nav ul li ------> 0,0,1,2

a:hover --------> 0,0,1,1

.nav a ------> 0,0,1,1

十三、CSS 的注释

注释用于解释代码,它们会被浏览器忽略。CSS 中的注释以" /* "开头,以" */ "结尾。

十四、盒子模型(重点)

14.1 盒子模型(Box Model)组成

盒子模型:把HTML页面中的布局元素看做一个矩形的盒子,也就是一个盛装内容的容器

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

14.2 边框(border)

border可以设置元素的边框,边框有三部分组成边框宽度(粗细)、边框样式、边框颜色

语法:border : border-width || border-style || border-color

边框样式border-style设置值如下:

none:没有边框即忽略所有边框的宽度(默认值)

solid:边框为单实线(最为常用)

dashed:边框为实线

dotted:边框为点线

CSS 边框属性允许指定一个元素边框的样式和颜色

边框简写:border: 1px solid red;(没有顺序)

边框分开写:border-top: 1px solid red;(只设定上边框)

14.3 表格的细线边框

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

语法:border-collapse:collapse;

collapse:合并

border-collapse:collapse 表示相邻边框合并在一起

14.4 边框会影响盒子实际大小

边框会额外增加盒子的实际大小,两种解决方法

  1. 测量盒子大小时不量边框

  2. 如果测量的时候包含了边框,则需要width/height 减去边框宽度

14.5 内边距(padding)

padding 属性用于设置内边距,即边框与内容之间的距离

padding属性(简写属性)可以有一到四个值

当给盒子指定padding值后,会发生两件事情:

  1. 内容和边框有了距离,添加了内边距

  2. padding影响了盒子实际大小

如果盒子已经有了宽度和高度,此时再指定内边距,会撑大盒子

解决方法:为了保证盒子跟效果图大小保持一致,让 width/height 减去多出来的内边距大小即可

如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小

14.6 外边距(margin)

margin 属性用于设置外边距,即控制盒子和盒子之间的距离(简写方式跟padding完全一致)

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

① 盒子必须指定了宽度(width)

② 盒子左右的外边距都设置为auto

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

常见的写法有以下三种:

margin-left: auto; margin-right: auto;

margin: auto;

margin: 0 auto;
注意: 以上方法是让块级元素水平居中, 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可。
24-行内元素和行内块元素水平居中_哔哩哔哩_bilibili

14.7 外边距合并

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。主要有两种情况:

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

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

解决方法:尽量只给一个盒子添加margin值

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

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

解决方法:

① 可以为父元素定义上边框

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

③ 可以为父元素添加overflow:hidden

14.6 清除内外边距

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

html 复制代码
<style>
    /*这也是CSS的第一行代码*/
    * {
         padding:0; /* 清除内边距 */
         margin:0; /* 清除外边距 */
     }
</style>

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

相关推荐
腾讯TNTWeb前端团队23 分钟前
helux v5 发布了,像pinia一样优雅地管理你的react状态吧
前端·javascript·react.js
范文杰4 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪4 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪4 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy5 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom5 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom5 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom5 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom6 小时前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试
uhakadotcom6 小时前
Node.js 包管理器:npm vs pnpm
前端·javascript·面试