找工作第二弹——挑战CSS重难点一篇就够

news2024/11/15 19:50:50

目录

  • 前言
  • CSS知识点篇
  • 1. 选择器
  • 2. CSS三大特性
    • 三大特性
    • 计算权重
  • 3. 显示模式
    • 显示模式转化
  • 4. 解决高度塌陷问题
  • 5. 浮动
    • 浮动介绍
    • 为什么要清除浮动-解决高度塌陷问题
    • 清除浮动
      • 额外标签法(W3C推荐做法)
      • 给父亲添加overflow
      • 伪元素法
      • 双伪元素
  • 6. BFC
  • 7. 定位
    • 子绝父相的原理
  • 8. 元素的显示与隐藏
    • display
    • visibility
    • overflow
  • 9. vertical-align属性应用
  • 10. 溢出文字省略号
  • CSS3知识点篇
  • 11. 新增选择器
    • 属性选择器
    • 结构伪类选择器
  • 12. CSS3盒子模型border-box
  • 13. calc()
  • 14. 过渡
  • 移动端
  • 1.视口
  • 2.meta
  • 3.物理像素&物理像素比
  • 4. 移动端开发方案
  • 5. 布局方法
    • 百分比布局
    • flex布局
    • rem适配布局
    • 媒体查询
    • less

前言

本篇文章是笔者在找工作前做的一些关于css复习的工作。记录了我对css相关知识的复习。

CSS知识点篇


1. 选择器

选择器作用用法
后代选择器选择后代元素.nav a
子代选择器选择亲儿子.nav>p
并集选择器选择某些相同样式的元素.nav, header
链接伪类选择器选择不同状态链接a{}和a:hover比较重要
:focus选择器获取光标的表单input:focus

2. CSS三大特性

三大特性

层叠性:相同选择器给设置相同样式,一个样式会对另一个样式产生覆盖,有效解决样式冲突问题(就近原则)。

继承性:样式的继承,子标签会继承父标签的某些样式。

优先级:当一个元素指定多个选择器就会有优先级的产生。跟权重关系也很大:

选择器权重
继承、*0
元素选择器0,0,0,1
类选择器、伪类选择器0,0,1,0
id选择器0,1,0,0
行内样式1,0,0,0
!important无穷大

需要注意的是,无论父元素权重有多高,子元素得到的权重都是0。

计算权重

复合选择器会有权重叠加。永远无进位。

ul li 权重为 0001 + 0001 = 0002
li的权重是0001 因此执行ul li规定的颜色。

需要注意的是a:hover 0,0,1,1

3. 显示模式

显示模式:元素以什么方式进行显示。

显示模式典型例子特点
块元素h、p、div、ul、li独占一行、高度可控、默认宽度为父元素100%、内部可放行内或块级元素
行内元素a、strong、b、em、i、del、span相邻行内元素在一行,一行显示多个、宽高直接设置无效、默认宽度为内容宽度、内部只能容纳文本或者其他行内元素
行内块元素img、input、td一行有多个、默认宽度为本身宽度、宽高可控

显示模式转化

行内->块  display: block;
块->行内 display: inline;
转化为行内块 display: inline-block;

4. 解决高度塌陷问题

什么是高度塌陷?

请看下面代码演示:

    <style>
        .father {
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .son {
            margin-top: 50px;
            width: 200px;
            height: 200px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
</html>

效果演示:
在这里插入图片描述
父元素和子元素一起掉下来了。原因:外边距塌陷。

解决方法一:给父元素一个边框:

 border: 1px solid transparent;

解决方式二:给父元素一个padding(这种如果是还原设计稿就需要简单计算了):

padding: 1px;

解决方式三:给父元素加一个overflow:hidden。隐藏溢出。

5. 浮动

浮动介绍

创建浮动框,在浮动框内左浮或者右浮。

特点:
脱离标准流,不再保留原先的位置;
一行内显示并且顶端对齐排列;
具有行内块元素的性质。

约束浮动:
先用标准流上下排列,之后子元素用浮动排列左右位置。

浮动需注意:
1.和标准流父盒子搭配;
2.一浮全浮。浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

为什么要清除浮动-解决高度塌陷问题

原因:父盒子内容不定,不方便给高,希望子盒子撑开父盒子。(也叫高度塌陷)

需解决的问题:浮动元素不占位,脱标。

解决方法:清除浮动。

清除浮动本质:清除浮动元素造成的影响。如果父盒子本身有高度,则不需要清除浮动;清除浮动之后,父级就会根据浮动的盒子自动检测高度。就不会影响标准流了。

清除浮动的策略是:闭合浮动。只在父盒子内部影响,不影响父盒子外面的其他盒子。

清除浮动

选择器{clear: 属性值;}

属性值可以是left、right、both;一般用到的都是clear: both。

额外标签法(W3C推荐做法)

额外标签法会在浮动末尾添加一个空的块级元素标签,例如:

<div style="clear: both"></div>

或者其他标签等。

<style>
.clear {
	clear: both;
}
</style>
<div class="box">
	<div>1</div>
	<div>2</div>
	<div class="clear">3</div>
</div>

给父亲添加overflow

溢出隐藏,无法显示溢出部分。

<style>
.box {
	overflow: hidden;
}
</style>
<div class="box">
	<div>1</div>
	<div>2</div>
	<div>3</div>
</div>

伪元素法

给父元素添加一个伪元素。

<style>
.clearfix:after {
	content: "",
	display: block;
	height: 0;
	clear: box;
	visibility: hidden;
}
//兼容性,IE6,7专有
.clearfix {
	*zoom: 1;
}
</style>

<div class="box clearfix">
	<div>1</div>
	<div>2</div>
	<div>3</div>
</div>

优点:不占内存,结构更清晰。结构最重要。

双伪元素

也是给父元素添加。在父元素前,后都插一个伪元素:

<style>
	.clearfix:before .clearfix:after {
		content: "",
		display: table;
	}
	.clearfix:after {
		clear: both;
	}
	.clearfix {
		*zoom: 1;
	}
</style>

6. BFC

BFC - Block Formatting Context 块级格式化上下文 BFC的定义,在官方文档到中是这么介绍的:一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的内部元素,BFC是一块块独立的渲染区域,可以将BFC看成是元素的一种属性,拥有了这种属性的元素就会使他的子元素与世隔绝,不会影响到外部其他元素。

BFC我在之前的笔试种也遇到过,前面说的清除浮动,和解决外边距塌陷其实都跟它有很大关系。BFC的奥义是:独立区域,互不影响。

所以我们在遇到清除浮动,解决外边距塌陷实际上都是在让它们所在区域是BFC区域。

那么重要的问题来了,如何让一块区域变成BFC区域?

1、根元素
2、float属性不为none
3、position为absolute或fixed
4、 display为inline-block, table-cell, table-caption, flex, inline-flex
5、 overflow不为visible

7. 定位

子绝父相的原理

子绝父相的含义是,子级是绝对定位的话,父级要用相对定位。

子级绝对定位,不会占有位置,但是如果父级没有设置相对定位的话,子级就以浏览器为父盒子进行绝对定位了,所以一定要给父亲一个相对定位。

8. 元素的显示与隐藏

display 显示隐藏
visbility 显示隐藏
overflow 溢出隐藏

display

none:隐藏对象(不再占有原来的位置);
block:转化为块级元素/显示元素。

visibility

inherit:继承上一个父对象的可见性;
visible:对象可视;
== hidden==:对象隐藏;(继续占有原来的位置)
collapse:隐藏表格的行或者列。

overflow

对溢出的元素进行显示或者隐藏。
hidden:不显示溢出内容;
scroll:显示滚动条(溢出不溢出都显示);
auto:在需要的时候添加滚动条,按需而来。

9. vertical-align属性应用

用于设置图片或者表单和文字的垂直对齐。

vertical-align: baseline | top | middle | bootom

baseline:默认。元素放置在父元素的基线上;
top:把元素的顶端与行中最高元素的顶端对齐;
middle:把此元素放置在父元素的中部;
bottom:把元素顶端与行中最低元素的顶端对齐。

应用:取消图片的底部空隙。

10. 溢出文字省略号

单行文本溢出省略号:

//文本强制一行内显示
white-space: nowrap
//超出部分隐藏
overflow: hidden
//文字用省略号代替超出部分
text-overflow: ellipsis;

CSS3知识点篇

11. 新增选择器

属性选择器

//利用属性选择器,选择某个大类中具有value属性的元素
input[value]{}

//还可以根据属性值来看
input[type=text]{}

//以icon开头
div[class^=icon]{}

//以data结尾
div[class$=data]{}

类选择器、伪类选择器、属性选择器权重均为10。

结构伪类选择器

//第一个子元素
div:nth:first-child{}

//最后一个子元素
div:nth:last-child{}

//任意元素,n从1开始
div:nth-child(n){}

12. CSS3盒子模型border-box

box-sizing有两种属性值:
content-box:盒子大小为width + padding + border
border-box:盒子大小为盒子的实际大小width

13. calc()

作用:计算盒子的宽度

width: calc(100% - 80px)

可以通过+、-、*、/ 进行计算。

14. 过渡

过渡transition是CSS3中具有颠覆性的特征之一。我们可以不使用Flash或者JS的情况下让元素从一种样式过渡到另一种。

经常和:hover一起使用。

语法:

transition: 要过渡的属性 花费时间 运动曲线 从什么时候开始

要过渡的属性:要变化的属性,如果想所有属性都变化,写一个all就可以;

花费时间:单位是秒,必须写单位;

运动曲线:默认是ease;

何时开始:单位是s,可以设置延迟触发时间。


移动端

1.视口

浏览器显示页面的屏幕区域。

视口有三个:布局视口、视觉视口、理想视口。

理想视口:手动写meta视口标签通知浏览器操作。设备有多扣款,我们布局的视口就有多宽。

2.meta

meta视口标签的属性和解释说明:

属性解释说明
width设置viewport的宽度,可以设置device-width特殊值
initial-scale初始缩放比,大于0的数字
maximum-scale最大缩放比,大于0的数字
minimum-scale最小缩放比,大于0的数字
user-scalable用户是否可以缩放,yes或no(1或0)

标准viewport设置:

eta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maxmum-scale=1.0,minmum-scale=1.0">

3.物理像素&物理像素比

物理像素是指屏幕能显示的最小颗粒,也是我们说的分辨率,是物理真实存在的。

在PC端页面中,1px等于1个物理像素,但是移动端就不一样了。

比如iphone8,物理像素是750,1px开发像素= 2个物理像素。

4. 移动端开发方案

两种,一种是单独制作移动端页面;另一种是响应式页面。

单独制作移动端页面,就类似于京东,有自己的一套PC端,也有自己的移动端网页;响应式页面,可以根据屏幕宽度来调整页面的布局,从而也能达到移动端的效果。

单独制作移动端页面目前是主流,可以用到流式布局(百分比)、flex弹性布局、less+rem+媒体查询布局、混合布局;

响应式页面兼容移动端,用到媒体查询、bootstrap。

5. 布局方法

百分比布局

这里需注意的是,百分比布局,内容不能无限拉伸,所以为了保护盒子在合理范围内,要设置最大宽度于最小宽度。

能用到的属性是max-width与min-width。

flex布局

1.主轴和侧轴,flex-direction是必须要写

flex-direction: 属性值
row: 主轴x轴,默认从左到右(默认)
row-reverse: x轴,从右到左
column: 主轴为y轴,从上到下
column-reserve: y轴,从下到上

2.主轴和侧轴元素排列方式:

主轴:

justify-content: 属性值

侧轴:

align-itmems: 属性值

属性:

flex-start: 从左到右排列
flex-end:从尾部开始排列
center:在主轴居中对齐
space-around:平分剩余空间
space-between:先平分两边,再平分剩余空间

3.设置子元素是否换行:

//不换行
flex-wrap: nowrap;
//换行
flex-wrap: wrap;

4.flex属性值:
在flex中,子项占有分数,可以分配剩余空间。flex后面可以跟着数字,也可以跟着百分比。大量用于布局以及自适应。
flex的值也可以是百分比。比如一共有十个盒子,要排成两行,一行五个。可是如果我设置flex等于1,则十个盒子压缩排成了一行。那么只需要给每个盒子的flex设置为20%即可达到换行效果。

rem适配布局

rem: 一种单位。类似于em,em是父元素字体大小。

不同的是rem的基准是基于html的字体大小。比如根元素(html)设置font-sie为12px,非根元素设置width:2rem,则换算成px就是24px。

优点:整体控制,根据修改html里面的文字大小来改变页面种的元素大小。

媒体查询

使用@media查询,可以针对不同的媒体类型定义不同的样式

@media mediatype and|not|only (media feature){}
@media:以media开头
mediatype:媒体类型,all(所有设备)、print(打印机或者打印预览)、screen(电脑屏幕)
and not only:关键字,and(一个或多个媒体特性连在一起)、not(排除某个媒体类型)、only(指定某个特殊的媒体类型)
media feature:媒体特性,必须有小括号包含,width(区域宽度)、min-width(最小宽度)、max-width(最大宽度)。

媒体查询也可也动态引入资源:

    <!-- 当我们屏幕大于等于640以上,div一行显示两个,当屏幕小于640,让div一行显示一个  -->
    <link rel="stylesheet" href="style320.css" media="screen and (min-width: 320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width: 640px)">

less

css的弊端:非程序式语言,没有变量、函数、SCOPE(作用域)等概念。

Less是一门CSS扩展语言,也成为CSS预处理器。

常见的CSS预处理器:Sass、Less、Stylus。

语法:

@变量名:值;

less编译:可以根据less文件,编译生成css文件,这样html才能使用。需要插件:Easy Less。

less嵌套:需要注意的是,伪类选择器,&:hover;

less运算:+、-、*、/。

跟运算相关的一些规则:

1.运算符左右两侧必须敲一个空格隔开;
2.两个数参与运算,如果只有一个数有单位,则最后的结果以这个单位为准;
3.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辉哥带你学hive第八讲

1.自定义函数 1.1 自定义函数类型 根据用户自定义函数类别分为以下三种&#xff1a; &#xff08;1&#xff09;UDF&#xff08;User-Defined-Function&#xff09; 一进一出。 &#xff08;2&#xff09;UDAF&#xff08;User-Defined Aggregation Function&#xff09; 用户…

【二叉树part08】| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 &#x1f388;LeetCode235.二叉搜索树的最近公共祖先 &#x1f388;LeetCode701.二叉搜索树中的插入操作 &#x1f388;LeetCode450.删除二叉搜索树中的节点 &#x1f388;LeetCode235.二叉搜索树的最近公共祖先 链接&#xff1a;235.二叉搜索树的最近公共祖先 给定一个…

Maven(三)如何使用命令导出所有的组件和版本信息

命令如下&#xff1a; mvn dependency:tree | grep ":jar" | sed s/ //g | sed s/-//g | sed s/\\-//g | sed s/|//g | awk !x[$0]注意&#xff1a;以上命令需要在 Git Bash 中执行。 执行结果&#xff1a; 整理完毕&#xff0c;完结撒花~ &#x1f33b;

Background-2 盲注的讲解基础概述二

文章目录 一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来二、基于时间的 SQL 盲注----------延时注入总结 一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来 select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,fl…

最全,常用正则表达式-正则实战(汇总)测试/开发工程师必备...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 校验数字的表达式…

Cookie、Session、Token、JWT详细介绍

Cookie、Session、Token详细介绍 &#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&#x1f680;&…

Vue3的setup语法糖下的defineEmit、defineExpose、defineProps函数

Vue3的setup语法糖下的defineEmit、defineExpose、defineProps父子传值 setup语法糖 setup作为vue3的新增生命周期hooks&#xff0c;其替代了vue2的beforeCreate、created&#xff0c;注意setup的执行时间是位于beforeCreate之前&#xff0c;熟悉vue2的都知道&#xff0c;在b…

C++——详解类模板

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.类模板①类模板的定义与实例化②类模板的实例化③类模板的具体化&#xff08;特化、特例化&#xff09;1️⃣完全具体化2️⃣部分具体化3️⃣…

xxl-job源码改造集成:适配opengauss数据、适配单点登录等

目录 一、摘要 二、集成方案 三、集成步骤 3.1 springboot集成xxl-job 3.2 适配高斯数据库(postgresql) 3.3 页面集成 3.4 登录集成 3.5 接口集成 四、部署 一、摘要 公司现在打算重构产品&#xff0c;将原来的quartz替换成xxl-job&#xff0c;主要因为quartz不能动态…

多通道分离与合并

1、分离 2、合并 Mat img imread("F:/testMap/plan.png");Mat imgs[3];split(img,imgs);//分离Mat img0,img1,img2;img0 imgs[0];img1 imgs[1]; img2 imgs[2];Mat img_H;merge(imgs,3,img_H);//合并vector<Mat> imgsV; imgsV.push_back(img0);imgsV.push_b…

5.8.3 TCP连接管理(一)TCP连接建立

5.8.3 TCP连接管理&#xff08;一&#xff09;TCP连接建立 我们知道TCP是面向连接的传输协议&#xff0c;在传输连接的建立和释放是每一次面向连接通信必不可少的过程&#xff0c;因此传输连接的管理使得传输连接的建立和释放的过程都能够正常的进行。 一、使用Wireshark查看…

UE4/5用GeneratedDynamicMeshActor网格细分静态网格体【用的是ue5建模模式的box,其他的没有作用】

目录 制作 逻辑&#xff1a; 效果&#xff1a; ​编辑 代码&#xff1a; 制作 前面和之前的流程一样&#xff0c;打开插件和继承GeneratedDynamicMeshActor创建一个蓝图&#xff1a; 逻辑&#xff1a; 两个函数对应了两种细分方法 上面的细分模式是&#xff1a;Loop细…

JupyterNotebook基本操作

目录 Jupyter notebook文件操作 创建文件 修改文件名 复制文件 移动文件 删除文件 上传文件 下载文件 Jupyter notebook单元格操作 内容类型 编辑模式 快捷键 对照表 命令模式 编辑模式 查看快捷键 进入Jupyter Notebook主界面“File”中 VSCode配置Jupyter…

Bootstrap 表单

文章目录 Bootstrap 表单表单布局垂直或基本表单内联表单水平表单支持的表单控件输入框&#xff08;Input&#xff09;文本框&#xff08;Textarea&#xff09;复选框&#xff08;Checkbox&#xff09;和单选框&#xff08;Radio&#xff09;选择框&#xff08;Select&#xff…

【Go】Go 语言教程--介绍(一)

文章目录 Go 语言特色Go 语言用途第一个 Go 程序Go 语言环境安装UNIX/Linux/Mac OS X, 和 FreeBSD 安装Windows 系统下安装安装测试 Go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompso…

文生图技术stable diffusion入门实战

文章目录 0. 环境搭建0.1 Windows0.1.1 git环境安装0.1.2 python 环境搭建0.1.2.1 配置pip国内镜像源 0.1.3 stable diffusion环境搭建0.1.3.1 远程访问Stable diffusion 1. 基础知识1.1 Stable Diffusion Webui及基础参数1.2 参数说明 0. 环境搭建 0.1 Windows 0.1.1 git环境…

电子时钟制作(瑞萨RA)(3)----使用J-Link烧写程序到瑞萨芯片

概述 这一节主要讲解如何使用J-Link对瑞萨RA芯片进行烧录。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E1A72DFL的开发板&#xff1a; 视频教程 https://www.bilibili.com/video/BV1kX4y1v7tL/ 电子时钟制作(瑞萨RA)----(2)使用串口进行程序…

初学spring5(八)整合MyBatis

学习回顾&#xff1a;初学spring5&#xff08;七&#xff09;AOP就这么简单 一、步骤 1、导入相关jar包 junit <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency>m…

如何使用RobotFramework编写好的测试用例

目录 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试套件结构 测试用例结构 工作流测试 数据驱动测试 用户关键字 变量 变量的命名 传参和返回值 避免使用Sleep关键字 我们AT…

算法设计与分析 课程期末复习简记(更新中)

网络流 下面是本章需要掌握的知识 • 流量⽹络的相关概念 • 最⼤流的概念 • 最⼩割集合的概念 • Dinic有效算法的步骤 • 会⼿推⼀个流量⽹络的最⼤流 下面对此依次进行复习 首先看流量网络的相关概念 上面是课程PPT中的定义&#xff0c;真是抽象 实际上&#xff0c;我们直接…