当前位置: 首页 > Web前端 > HTML

常用前端布局、CSS技巧介绍

时间:2023-04-02 22:26:28 HTML

常用前端布局、CSS技巧介绍常用前端布局汇总,以及性能、兼容性等方面的介绍可变尺寸绘制常用CSS技巧squares1:如果通过设置宽度为百分比,则高度无法通过百分比控制。这个地方可以使用padding。首先,元素的高度=height+padding*2+border*2;所以我们可以将width设置为0,然后使用padding来实现盒子的高度(如果元素padding的值是百分比,则根据其父元素的宽度来计算)width:50%;高度:0;背景:红色;底边距:50%;2:通过给元素添加一个正方形图片来实现,设置图片宽度为100%,高度为auto,元素不设置高度。(不推荐,尤其是九宫格)3:通过vw,vh实现。(存在一定的兼容性问题)元素的高度是可变的,要求元素内部元素水平居中,垂直居中(主要是垂直居中)。方案一:通过display:table实现,给最外层元素display:table,同时添加一个二级外层元素设置display:table-cell,vertical-align:middle;这时候第三层的元素就可以垂直居中了。

.container{显示:表格;宽度:50%;高度:50vw;}.center{显示:表格单元格;垂直对齐:中间;}.center>span{显示:块;宽度:20px;高度:20px;背景:#ff0000;margin:0auto;}2:通过flex布局,父元素设置为justify-content:center,align-items:center;3:通过网格布局,父元素设置为justify-content:center,align-items:center;4:通过position+transform(margin),如果使用margin需要知道子元素的宽高,并且宽高是不可变的(这是因为magin是根据父元素的宽计算的,如果设置为百分比),如果使用transform就没有这个限制(transform的值是根据元素本身的宽高计算的),但是还有一个兼容性问题(建议使用transform方式)
.parent{width:200px;高度:200px;位置:相对;background:yellow;}//transform:translate(-50%,-50%);.child{position:absolute;宽度:100px;高度:100px;左:50%;顶部:50%;边距:-50px00-50px;background:green;}对于单行文字和多行文字悬空...//注意单行文字可用这是单行文字

.text{溢出:隐藏;空白:nowrap;文本溢出:省略号;width:200px;}//多行文字需要注意框的高度要适当调整,否则只会显示最后一行文字的一半//该方法适用于WebKit浏览器和移动端这是一个多行文本

.text{height:100px;显示:-webkit-box;-webkit-box-orient:垂直;-webkit-line-clamp:7;overflow:hidden;}自定义文字选择样式选择部分文字

//全局设置选中文字样式::selection{background:aquamarine;color:black;}//设置.custom-text-selection::selection{background:deeppink;color:white;}foracertainclass.//文字阴影text-shadow:1px1px#ad6969;//CSS3滤镜(filter)属性filter:blur(50px);//设置高斯模糊单位px会导致边缘变大filter:grayscale(100%);//灰度100%filter:brightness(150%)//设置亮度filter:contrast(180%);//Setcontrast...clip:rect(0,0,0,0)//元素裁剪(只对定位元素有效)cubic-bezier属性Third-orderBéziercurveusers控制动画速度用法:transition:transform1scubic-bezier();用户选择:无;//文本不能被选中CSS变量用法//基本用法var-dynamic

.body{--customize-height:100px;}.var-dynamic{height:var(--customize-height);}//扩展advanced通过js控制css中的变量值var-dynamic

.var-dynamic{height:var(--自定义高度);//与lesssass等预处理器的变量比较1:预处理器的变量不是实时的,试图改变media中变量的值是Infeasible,css变量可以是2:无继承,无级联查看详情borderwithborderof1pixel//由于设备dpr不同,我们设置的1pxborder有设备上的不同渲染效果不能//那么不可以通过设备dpr设置不同的边框值吗?//我们需要知道border-width的最小值是1px,低于1无效//usebox-shadow:0000.5px;处理//浏览器支持95.5%.hairline-border{box-shadow:0001px;}@media(min-resolution:2dppx){.hairline-border{box-shadow:0000.5px;}}@media(min-resolution:3dppx){.hairline-border{box-shadow:0000.33333333px;}}@media(min-resolution:4dppx){.hairline-border{box-shadow:0000.25px;}}对于列表元素,对一个元素的样式做单独处理(:notselector)//给每个li元素添加右边框最后一个不添加
  • //传统方案li{border-right:2pxsolid#d2d5e4;}li:last-child{border-right:none;}//简洁的写法li:not(:last-child){border-right:2pxsolid#d2d5e4;}//notli的其他写法:not(.a)//把其他选择器放在notui:hoverli:not(:hover){opacity:0.5;}css三角形绘制//通过border间接实现.triangle{宽度:0;高度:0;border-top:20pxsolid#333;左边框:20px实心透明;border-right:20pxsolidtransparent;}//css3clip-path裁切属性clip-path:polygon(50%0px,100%100%,0px100%);一个小小的加载动画@keyframes甜甜圈旋转{0%{变换:旋转(0度);}100%{变换:旋转(360deg);}}.donut{显示:内联块;border:4pxsolidrgba(0,0,0,0.1);左边框颜色:#7983ff;边界半径:50%;宽度:30px;高度:30px;动画:甜甜圈旋转1.2秒线性无限;}css实现开关.switch{位置:相对;显示:内联块;宽度:40px;高度:20px;背景色:rgba(0,0,0,0.25);边界半径:20px;转换:所有0.3秒;}.switch::after{内容:'';位置:绝对;宽度:18px;高度:18px;边界半径:18px;背景色:白色;顶部:1px;左:1px;转换:所有0.3s;}input[type='checkbox']:checked+.switch::after{transform:translateX(20px);}input[type='checkbox']:checked+.switch{background-color:#7983ff;}.offscreen{位置:绝对;左:-9999px;}