CSS常用技巧专题一

文章目录

  • 一、`transition`和`animation`的区别
    • 1.1、`transition`
    • 1.2、`animation`
  • 二、两栏布局的实现
    • 2.1、利用浮动
      • 2.1.1、利用浮动,将左边元素宽度设置为`200px`,并且设置向左浮动
      • 2.1.2、利用浮动,左侧元素设置固定大小,并左浮动
    • 2.2、利用`flex`布局
    • 2.3、利用绝对定位
      • 2.3.1、左边元素设置为`absolute`定位,并且宽度设置为`200px`。将右边元素的`margin-left`的值设置为`200px`
      • 2.3.2、左边元素宽度设置为`200px`,右边元素设置为绝对定位,左边定位为`200px`,其余方向定位为`0`
  • 三、使用 `clear` 属性清除浮动的原理
  • 四、画一条`0.5px`的线
    • 4.1、采用`transform: scale()`
    • 4.2、采用`meta viewport`的方式
  • 五、水平垂直居中的实现
    • 5.1、利用绝对定位
      • 5.1.1、利用绝对定位,先将元素的左上角通过`top:50%`和`left:50%`定位到页面的中心,然后再通过`translate`来调整元素的中心点到页面的中心
      • 5.1.2、利用绝对定位,设置四个方向的值都为`0`,并将`margin`设置为`auto`,由于宽高固定,因此对应方向实现平分,可以实现水平和垂直方向上的居中
    • 5.2、使用`flex`布局
  • 六、最后

一、transitionanimation的区别

transitionanimation都是用于在CSS中添加动画效果的属性。

1.1、transition

transition是过度属性,强调过度。

它可以控制CSS属性从一个值平滑过渡到另一个值的时间、速度曲线和延迟。

通过指定过渡的 属性、时间、曲线和延迟 ,我们可以创建出各种各样的动画效果。

例如,我们可以使用transition来实现元素的淡入淡出、颜色渐变、尺寸变化等效果。

.button {background-color: blue;transition: background-color 0.3s ease;
}

它的实现需要触发一个事件(比如鼠标移动上去,焦点,点击等)才执行动画。

它类似于flash的补间动画,设置一个开始关键帧,一个结束关键帧。

1.2、animation

animation属性则更加强大,它允许我们创建更复杂和精细的动画效果。

animation属性需要定义关键帧(keyframes),即在动画过程中元素的不同状态。

我们可以指定每个关键帧的具体样式,然后使用animation属性来指定关键帧的名称、持续时间、重复次数、速度曲线等参数。

通过这些参数的组合,我们可以实现更加自由和多样化的动画效果。

例如,我们可以创建旋转、缩放、移动、渐变等复杂的动画效果。

.loader {width: 50px;height: 50px;border: 5px solid black;border-top: 5px solid transparent;border-radius: 50%;animation: rotate 1s infinite linear;
}@keyframes rotate {from { transform: rotate(0deg); }to { transform: rotate(360deg); }
}

animation是动画属性,它的实现不需要触发事件,设定好时间之后可以自己执行,且可以循环一个动画。

它也类似于flash的补间动画,但是它可以设置多个关键帧(用@keyframe定义)完成动画。

二、两栏布局的实现

一般两栏布局指的是 左边一栏宽度固定,右边一栏宽度自适应,两栏布局的具体实现:

2.1、利用浮动

2.1.1、利用浮动,将左边元素宽度设置为200px,并且设置向左浮动

将右边元素的margin-left设置为200px,宽度设置为auto(默认为auto,撑满整个父元素)。

.outer {height: 100px;
}
.left {float: left;width: 200px;background: tomato;
}
.right {margin-left: 200px;width: auto;background: gold;
}

2.1.2、利用浮动,左侧元素设置固定大小,并左浮动

右侧元素设置overflow: hidden; 这样右边就触发了BFCBFC的区域不会与浮动元素发生重叠,所以两侧就不会发生重叠。

.left{width: 100px;height: 200px;background: red;float: left;
}
.right{height: 300px;background: blue;overflow: hidden;
}

2.2、利用flex布局

利用flex布局,将左边元素设置为固定宽度200px,将右边的元素设置为flex:1

.outer {display: flex;height: 100px;
}
.left {width: 200px;background: tomato;
}
.right {flex: 1;background: gold;
}

2.3、利用绝对定位

利用绝对定位,将父级元素设置为相对定位。

2.3.1、左边元素设置为absolute定位,并且宽度设置为200px。将右边元素的margin-left的值设置为200px

.outer {position: relative;height: 100px;
}
.left {position: absolute;width: 200px;height: 100px;background: tomato;
}
.right {margin-left: 200px;background: gold;
}

2.3.2、左边元素宽度设置为200px,右边元素设置为绝对定位,左边定位为200px,其余方向定位为0

.outer {position: relative;height: 100px;
}
.left {width: 200px;background: tomato;
}
.right {position: absolute;top: 0;right: 0;bottom: 0;left: 200px;background: gold;
}

三、使用 clear 属性清除浮动的原理

使用clear属性清除浮动,其语法如下:

clear:none|left|right|both

如果单看字面意思:

  • clear:left 是“清除左浮动”
  • clear:right 是“清除右浮动”

实际上,这种解释是有问题的,因为浮动一直还在,并没有清除。

官方对clear属性解释:“元素盒子的边不能和前面的浮动元素相邻”,对元素设置clear属性是为了避免浮动元素对该元素的影响,而不是清除掉浮动。

还需要注意 clear 属性指的是元素盒子的边不能和前面的浮动元素相邻,注意这里“前面的”3个字,也就是 clear属性对“后面的”浮动元素是不闻不问的

考虑到float属性要么是left,要么是right,不可能同时存在,同时由于clear属性对“后面的”浮动元素不闻不问。

因此,当clear:left有效的时候,clear:right必定无效,也就是此时clear:left等同于设置clear:both

同样地,clear:right如果有效也是等同于设置clear:both。由此可见,clear:leftclear:right这两个声明就没有任何使用的价值,至少在CSS世界中是如此,直接使用clear:both

一般使用伪元素的方式清除浮动:

.clear::after{  content:'';  display: block;   clear:both;
}

clear属性只有块级元素才有效的,而::after等伪元素默认都是内联水平,这就是借助伪元素清除浮动影响时需要设置display属性值的原因。

四、画一条0.5px的线

4.1、采用transform: scale()

采用transform: scale()的方式,该方法用来定义元素的2D 缩放转换:

transform: scale(0.5,0.5);

4.2、采用meta viewport的方式

<meta name="viewport" content="width=device-width, initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5"/>

这样就能缩放到原来的0.5倍,如果是1px那么就会变成0.5pxviewport只针对于移动端,只在移动端上才能看到效果

五、水平垂直居中的实现

5.1、利用绝对定位

5.1.1、利用绝对定位,先将元素的左上角通过top:50%left:50%定位到页面的中心,然后再通过translate来调整元素的中心点到页面的中心

该方法需要考虑浏览器兼容问题。

.parent {    position: relative;
} .child {    position: absolute;    left: 50%;   top: 50%;    transform: translate(-50%,-50%);
}

5.1.2、利用绝对定位,设置四个方向的值都为0,并将margin设置为auto,由于宽高固定,因此对应方向实现平分,可以实现水平和垂直方向上的居中

该方法适用于盒子有宽高的情况:

.parent {position: relative;
}.child {position: absolute;top: 0;bottom: 0;left: 0;right: 0;margin: auto;
}

利用绝对定位,先将元素的左上角通过top:50%left:50%定位到页面的中心,然后再通过margin负值来调整元素的中心点到页面的中心。该方法适用于盒子宽高已知的情况

.parent {position: relative;
}.child {position: absolute;top: 50%;left: 50%;margin-top: -50px;     /* 自身 height 的一半 */margin-left: -50px;    /* 自身 width 的一半 */
}

5.2、使用flex布局

使用flex布局,通过align-items:centerjustify-content:center设置容器的垂直和水平方向上为居中对齐,然后它的子元素也可以实现垂直和水平的居中。

该方法要考虑兼容的问题,该方法在移动端用的较多:

.parent {display: flex;justify-content:center;align-items:center;
}

六、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费在线markdown语法编辑器

本地用习惯了Typora&#xff0c;但是上传的图片保存在本地&#xff0c;其他电脑想查看必须连本地的图片也拷贝过去。虽然Typora可以用PicGo保存远程的图片&#xff0c;但电脑离线之后看不到图片&#xff0c;不能接受。所以想找一款在线版的编辑器&#xff0c;方便记笔记。 我之…

08‐Mysql全局优化与Mysql 8.0新特详解

文章目录 Mysql全局优化总结配置文件my.ini或my.cnf的全局参数最大连接数允许用户连接的最大数量MySQL能够暂存的连接数量JDBC连接空闲等待时长client连接空闲等待时长innodb线程并发数innodb存储引擎buffer pool缓存大小行锁锁定时间redo log写入策略binlog写入磁盘机制排序线…

【Stm32-F407】全速DAP仿真器下载程序

文章内容如下: 1) 全速DAP仿真器简介2) 全速DAP仿真器下载程序流程 1) 全速DAP仿真器简介 1&#xff09;全速DAP仿真器简介 DAP全称 Data Acquisition Processor&#xff0c;是一种用于数据采集和实时控制的设备。本文使用的全速DAP仿真器遵循ARM公司的CMSIS-DAP标准&#xff…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

【PHP入门】2.1-运算符

-运算符- 运算符&#xff1a;operator&#xff0c;是一种将数据进行运算的特殊符号&#xff0c;在PHP中一共有十种运算符之多。 2.1.1赋值运算符 赋值运算&#xff1a;符号是“”&#xff0c;表示将右边的结果&#xff08;可以是变量、数据、常量和其它运算出来的结果&#…

C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然个人认为当前的c# wpf内容已经足够多&#xff0c;但是肯定还是有很多个性化的需求没有满足。比如说不够好看&#xff0c;比如说动画效果不好&a…

Scala多线程爬虫程序的数据可视化与分析实践

一、Scala简介 Scala是一种多种类型的编程语言&#xff0c;结合了针对对象编程和函数式编程的功能。它运行在Java虚拟机上&#xff0c;具有强大的运算能力和丰富的库支持。Scala常用于大数据处理、并发编程和Web应用程序开发。其灵活性和高效性编程成为编写多线程爬虫程序的理…

DiffUtil + RecyclerView 在 Kotlin中的使用

很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,…

Hadoop3.x完全分布式模式下slaveDataNode节点未启动调整

目录 前言 一、问题重现 1、查询Hadoop版本 2、集群启动Hadoop 二、问题分析 三、Hadoop3.x的集群配置 1、停止Hadoop服务 2、配置workers 3、从节点检测 4、WebUI监控 总结 前言 在大数据的世界里&#xff0c;Hadoop绝对是一个值得学习的框架。关于Hadoop的知识&…

50ms时延工业相机

华睿工业相机A3504CG000 参数配置&#xff1a; 相机端到端理论时延&#xff1a;80ms 厂家同步信息&#xff0c;此款设备帧率上线23fps&#xff0c;单帧时延&#xff1a;43.48ms&#xff0c;按照一图缓存加上传输显示的话&#xff0c;厂家预估时延在&#xff1a;80ms 厂家还有…

亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471

1.漏洞概述 亿某通电子文档安全管理系统是一款电子文档安全防护软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产。亿赛通电子文档安全管理系统UploadFileFromClientServiceForClient接口处存在任意文件…

Java EE 网络之网络编程

文章目录 1. 什么是网络编程1.1 基础概念 2. Socket 套接字2.1 概念2.2 分类2.2.1TCP 和 UDP 的区别 2.3 UDP数据报套接字编程2.3.1 DatagramSocket2.3.2 DatagramPacket2.3.3 写一个简单的 UDP 的客户端程序2.3.3.1 编写服务器代码2.3.3.2 编写客户端代码 2.3.4 编写基于 echo…