能让你受益匪浅的10个css使用技巧

点击上方蓝色字体,关注我啦~~

◆◆

CSS技巧大杂烩

◆◆

01

 Safari 中z-index的层级问题

在Safari浏览器下(此Safari浏览器包括iOS的Safari,iPhone上的微信浏览器,以及Mac OS X系统的Safari浏览器),当我们使用3D transform变换的时候,如果祖先元素没有overflow:hidden/scroll/auto等限制,则会直接忽略自身和其他元素的z-index层叠顺序设置,而直接使用真实世界的3D视角进行渲染。例如下面的场景,图中红框里面的模块,使用 3D transform变换,进行旋转动画,但是在Safari浏览器下,忽略了二维码遮罩层的z-index,结果使用了真实世界的3D视角进行渲染。出现了重叠的bug:

解决方法:

  1. 父级,任意父级,非body级别,设置overflow:hidden可恢复和其他浏览器一样的渲染。

  2. 以毒攻毒。有时候,页面复杂,我们不能给父级设置overflow:hidden,那么可以将被影响的元素设置一个足够大的translateZ值就可以,如translateZ(100px)。

02

文字居中兼容

正常处理文字上下居中的手段是让元素height和line-height相等,但是安卓环境下当字体大小<14px/0.7rem的时候会出现居中失效的情况。

解决方法:

  1. 判断系统环境(安卓/IOS)分别作微调;

  2. font-size、height、width全部放大为2倍,利用transform进行缩放

height: 1rem;
width: 2rem;
font-size: 0.5rem;

变成:
height: 2rem;
width: 4rem;
font-size: 1rem;
transform: scale(0.5);

但由于放大之后占据空间,左右会留白,需要利用margin负值 margin: -0.35rem -0.45rem 0;调整

  1. 有解决方案是将rem改为px。

03

2个a标签做90度旋转bug

定义了一个动画效果如下(sass代码):

@keyframes official-featured_rotate {
10%,50%{
transform:rotateY(90deg);
}
60%,100%{
transform:rotateY(0deg);
}
}
&-rotate {
position: absolute;
width: rem(350/2);
height: rem(160/2);
transform-style:preserve-3d;
transform:translate3d(0,0,0);
&.ani_rotate {
animation:official-featured_rotate 5s linear 0s infinite;
animation-delay: 2s;
}
&__item {
width: rem(350/2);
height: rem(160/2);
position: absolute;
&:nth-child(1) {
transform: translateZ(rem(350/4));
}
&:nth-child(2) {
transform: rotateY(90deg) translate3d(0,0,rem(350/4));
}
}
}

这里是2个a标签,做90度的旋转效果使得两个a可以循环切换展示。这里2个的基本样式是一致的,宽高也一样。但是在安卓下(ios正常)只有打开页面能看到的第一个a标签能正常跳转,能正常绑定事件。第二个a不能跳转,我就想那我通过点击事件来跳转可以不,结果绑定任何事件都不生效。

解决方法:

然后测试发现,在旋转过程中(只要未完全旋转90度)点击还是能一切正常的。于是把旋转角度改为了89.99度,一切正常。动画效果修改为:

@keyframes official-featured_rotate {
10%,50%{  
     transform:rotateY(-89.99deg);  
   }
   60%,100%{  
     transform:rotateY(0deg);  
   }  
}

后来查找了一下stackoverflow(https://stackoverflow.com/questions/23548612/cant-click-on-buttons-after-css-transform)。里面也是说了这个解决方法。

04

使用currentColor来简化css

设置border-color、background-color等颜色的时候,可以使用currentColor[与当前元素的字体颜色相同]来简化css。

.div{
color: rgba(0,0,0,.85);
font-weight: 500;
text-align: left;
padding: 20px;
border: solid 1px currentColor;
}

05

灰色滤镜做样式的disable

灰色图可以直接加滤镜,不用切多一张图。如图:

解决方法:

.coupon_style .disable {
-webkit-filter: grayscale(1);
}

06

 曲线阴影的实现

  • 多个阴影重叠,就是正常阴影+曲线阴影

  • 正常情况下,有个矩形有正常的阴影,作为主投影,这时候再定义一个有一定弧度圆角的圆角矩形,然后放在正常矩形的下面,并露出一点点底部有弧度的阴影,这样的话就可以形成曲线投影的效果。

效果:

代码:

07

翘边阴影的实现

利用:before和:after,加上绝对定位的性质,可以形成一个矩形,这个时候结合CSS3的倾斜属性skew和旋转属性rote。就可以形成一个有旋转角度的平行四边形,这个时候再和原来的矩形重叠,则可产生翘边效果。

效果:

代码:

08

用-webkit-mask实现蒙版


效果图:

代码:
background: url("images/logo.png") no-repeat;-webkit-mask : url("images/mask.png");

mask.png中黑色代表是不透明的(alpha:1),其他部分为透明的(alpha:0),将它盖在背景图上,注意:背景图对应mask.png中透明的位置也会变成透明,留下非透明的形状,即背景图的可见形状与mask.png的可见形状相同,即为"蒙版"。

09

图片自适应占位方式

当图片未正确加载,或加载完成前,由于图片高度为0,其容器会因为没有内容,导致容器无法撑高而塌陷,而如果加载较慢则会在图片加载完成后出现闪烁的情况。

css中,当padding-top/bottom值为百分比时,其值都是以其父元素的宽度为参照对象。因此对于宽高比例固定的情况,可以利用padding-top/bottom用于图片自适应占位,解决页面闪烁的问题。

如果仅设置值padding-top/bottom为百分比,会出现一个问题,就是该方法容器的max-height属性会失效,就无法限制容器的最大高度了。

因此,可以给容器添加一个伪元素的子元素用于撑起内容,该子元素拥有一个padding-top:100%,同时给容器一个max-height尝试限制容器的高度,最后内容用绝对定位的方式添加即可。如:

#container{
width: 50%;
max-height:300px;
background-color:#ddd;
/*由于margin存在塌陷的问题,需要通过构建BFC来保证容器不会受到影响,因此这里可以给容器一个overflow:hidden来保证伪元素的margin不会塌陷。*/
overflow:hidden;
position: relative; /* 父容器相对定位 */
}
.placeholder::after{
content:"";
display:block;
margin-top:100%;
}
img{
position:absolute; /* 内容绝对定位 */
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%); /* 控制内容绝对定位位置 */
width:80%; /* 控制图片不溢出,因此这里使用的图片实际宽度受父容器影响 */
}

但是对于宽高比例不定的图片来说,这样做可能导致图片显示不全,使用时要注意。

10

页面自适应最佳实践

经过大型项目实践,下面这段CSS是最好的基于rem和vm和calc实践代码:

html {
font-size: 16px;
}
@media screen and (min-width: 375px) {
html {
/* iPhone6的375px尺寸作为16px基准,414px正好18px大小, 600 20px */
font-size: calc(100% + 2 * (100vw - 375px) / 39);
font-size: calc(16px + 2 * (100vw - 375px) / 39);
}
}
@media screen and (min-width: 414px) {
html {
/* 414px-1000px每100像素宽字体增加1px(18px-22px) */
font-size: calc(112.5% + 4 * (100vw - 414px) / 586);
font-size: calc(18px + 4 * (100vw - 414px) / 586);
}
}
@media screen and (min-width: 600px) {
html {
/* 600px-1000px每100像素宽字体增加1px(20px-24px) */
font-size: calc(125% + 4 * (100vw - 600px) / 400);
font-size: calc(20px + 4 * (100vw - 600px) / 400);
}
}
@media screen and (min-width: 1000px) {
html {
/* 1000px往后是每100像素0.5px增加 */
font-size: calc(137.5% + 6 * (100vw - 1000px) / 1000);
font-size: calc(22px + 6 * (100vw - 1000px) / 1000);
}
}

◆◆

最后

◆◆

  • 欢迎加我微信(winty230),拉你进技术群,长期交流学习...

  • 欢迎关注「前端Q」,认真学前端,做个专业的技术人...

    在看点这里

winty~~
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用CSS提高网站性能的30种方法
艾编程带你学前端博客
12-30 1851
根据httparchive.org的页面重量报告,CSS在平均70个请求和2MB的网页上占7个HTTP请求和70Kb的代码。下面的30个技巧将帮助您优化CSS,以改善实际和感知的响应时间。
六个好习惯让你轻松搞定PCB设计
01-19
下面给大家列出以下六个让你受益匪浅的好习惯。  (一) 细节决定成败  PCB设计是一个细致的工作,需要的就是细心和耐心。刚开始做设计的新手经常犯的错误就是一些细节错误。器件管脚弄错了,器件封装用错了,管脚...
CSS 技术技巧
Lee的博客
07-07 1888
1.不要让你的代码脱离你的掌控,尽量简洁别让你的代码脱离你的掌控这是编程的一种通用建议,不仅仅适合css. 当你开始写代码的时候,先思考,思考以下几个问题:我怎样实现?有其他方法实现么?怎样优化(简洁,可维护,等等)?急于编码会浪费时间,你有可能花了一个小时也没实现,不得不从头再来,这不应该发生。如果你花了好几个小时写一个css幻灯片,最终没办法用了个js幻灯片插件或者别的,这是很蛋疼的,并不是说...
改善CSS的10种最佳做法,让前端开发更简单!
web前端入门基础进阶教程-htmlcssjs
06-15 278
CSS似乎是一种非常简单的语言,很难在其中犯错误。你只需添加样式规则,就可以对网站进行样式设置了,对吗?对于只需要几个CSS文件的小型网站,情况可能就是这样。但是在大型应用程序中,样式可能会迅速失控。你如何使它们易于管理? 事实是,就像其他任何语言一样,CSS可能会影响或破坏你的设计。这是CSS的10条最佳实践技巧,可以帮助你从样式中获得最大的收益。 1.你真的需要一个框架吗? 首先,确定你是否真的需要使用CSS框架。现在,有许多轻量级的替代健壮框架。通常,你不会使用框架中的每个选择器,因此你的软件包将包含
怎么学好html5和css3,如何提高你的CSS水平
weixin_39615419的博客
06-17 288
在今天的文章中,我将要聊聊我在一年半的实践中,总结出来的css经验。首先让我提醒你,css是极其简单的一门语言,简单到可以用三个词概括:选择器,属性以及属性的值。这也是一些人不喜欢css的原因:他们觉得写css像孩子玩乐高玩具一样简单。是这样的。。如果你给一个9岁的孩子介绍css的基本原理,他就会搭建一个网站。不过这个网站不会很复杂,也就是一些包含头部,链接,内容图片的页面而已。事实上,css是一...
你不知道的10种最佳CSS改善方法
zz_jesse的博客
05-28 131
英文 |https://medium.com/better-programming/10-best-practices-for-improving-your-css-84c69aac6...
使用HTML5 / CSS3重新设计自适应YouTube [教程]
cune1359的博客
07-02 749
如果您最近看过YouTube,则可能会注意到其网站布局中有一个明显的遗漏。 他们的设计缺乏在调整浏览器窗口大小时进行响应折叠的能力。 奇怪的是,布局甚至没有缩小到更小的宽度。 目前,YouTube是使用固定宽度的网页设计的。 我想引入一些现代的网页设计技巧,并为YouTube主页重新设计。 在本教程中,我将说明我们如何从头开始构建自定义的,响应移动设备的YouTube克隆布局。 我将使...
改善CSS的10种最佳做法,帮助你从样式中获得最大的收益
jinmu520的博客
05-18 175
CSS似乎是一种非常简单的语言,很难在其中犯错误。你只需添加样式规则,就可以对网站进行样式设置了,对吗?对于只需要几个CSS文件的小型网站,情况可能就是这样。但是在大型应用程序中,样式可能会迅速失控。你如何使它们易于管理? 事实是,就像其他任何语言一样,CSS可能会影响或破坏你的设计。这是CSS的10条最佳实践技巧,可以帮助你从样式中获得最大的收益。 1.你真的需要一个框架吗? 首先,确定你是否真的需要使用CSS框架。现在,有许多轻量级的替代健壮框架。通常,你不会使用框架中的每个选择器,因此你的软件包将包
CSS 重构:样式表性能调优
GitChat
04-12 1252
内容简介 CSS 对于现代网站的用户体验至关重要,其地位不亚于决定着网站外形的 HTML 和让网站动起来的 JavaScript。本书作为 CSS 代码重构指南,不仅展示了如何编写结构合理的 CSS,以构建响应式、易于使用的网站,还介绍了如何用重构方法创建可读性更强和更易于维护的 CSS 代码。不论你是刚开始开发自己的第一个 CSS 项目或是清理现有项目的代码,本书提供的多种宝贵方法都可以帮你建设...
CSS编码准则和技巧(完美跨浏览器兼容)
zhandeen的专栏
09-16 969
导读:很多人认为,完美的跨浏览器兼容并不必要,这样说虽然没错,但在很多情形,一种近似的兼容还是很容易实现的,本文讲的是各种跨浏览器兼容的 CSS 编码准则和技巧。 作为 Web 设计师,你的网站在各种浏览器中有完全一样的表现是很多人的目标,然而这是一个永远无法真正实现的目标,很多人认为,完美的跨浏览器兼容并不必要,这样说虽然没错,但在很多情形,一种近似的兼容还是很容易实现的,本文讲的是各种跨浏览
让你受益匪浅的电气装配规范
08-23
电气成套专业规范
两个CSS实例,看了绝对受益匪浅
10-02
当今的两个最好的CSS设计师和开发人员创建的两个超棒的实例,涵盖了很多布局的知识点,绝对算是经典之作,每看一次都有收获!
Java程序员应该知道的10个调试技巧
12-22
本文介绍了Java程序员必知的10个调试技巧,保证让你受益匪浅!  调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的...
汉语的英语级别提示:可能是让你受益匪浅的英语进阶指南
02-13
在我思考如何回答这个问题时,想到了在大四上一学期我考过26门课的经验(其中重修19门,当前学期7门),觉得我应该能勉强提供一些高效学习的小技巧。在和她交流了一番学习心得后,我而不是她在学习方面的热情而竟之...
scratch2源码植物大战僵尸
05-30
scratch2源码植物大战僵尸提取方式是百度网盘分享地址
基于Kotlin和Java的IHeWeather天气应用设计源码
05-30
本项目是基于Kotlin和Java的IHeWeather天气应用设计源码,包含132个文件,主要文件类型为kt、xml、java、webp、so、gradle、gitignore、jar、pro和properties。该项目适用于基于和风天气的天气应用的开发和设计,为用户提供了一个丰富的资源库,包含多种文件类型,方便进行基于和风天气的天气应用相关的开发和设计工作。
01-金属光泽字效样机.zip
最新发布
05-30
潮流金属3D立体文字
PS+LR-证件照 别只会美颜
05-30
证件照 别只会美颜
css权威指南第三版pdf
07-03
它是由Eric Meyer撰写的,旨在向读者介绍CSS(层叠样式表)的概念、语法和使用技巧。 这本书的第三版主要更新了针对最新的CSS标准和技术进行的内容。它包含了丰富的示例代码、解释性文字和实用技巧,以帮助读者更好...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 前端五个拿来就能用的炫酷动画登录页面 39324
  • Vue3+TypeScript 完整项目上手教程 28899
  • 今天,搞定Chrome运行时的性能、内存问题 [太实用了] 25418
  • 从实际项目出发,告诉你vue3到底香不香 21095
  • JS 实现网页截屏五种方法 13127

最新评论

  • 你真的理解 devDependencies 和 dependencies 的区别吗?

    养羊得亿: 我测试和你说的不一样,devDependencies没有被打包进去

  • 巨石瓦解!我把Vue3巨石项目拆成了十几个微应用~

    天生我材必有用_吴用: 我有vue作为基座vue3+vite+ts的子应用改造的详细步骤,项目实践+上线部署:http://t.csdnimg.cn/8E3op

  • 解锁前端难题:亲手实现一个图片标注工具

    浅浅的痕迹: 标注旋转的时候另外八个点没有跟着转,是什么问题啊?可以贴一下完整的代码吗?谢谢了

  • 10 个可以副业赚钱的网站,总有一个适合你

    普通网友: 我是利用下班时间做互联网外包,每个月能多收入1万多,偶尔需要熬夜,需要技术和执行力比较强,推荐这个"YesPMP”平台,很多项目需求,真的好用,赚钱嘎嘎香。

  • 17 个免费托管后端代码的网站工具

    m0_73233638: 这些那个支持PHP?

大家在看

  • 辅助驾驶主动安全:通往自动驾驶的必经之路
  • 单片机串口控制ESP8266局域网TCP实验失败可能的原因 284
  • Java进阶指南:高级面试问题与精辟解答(六)
  • 全国青少年信息素养大赛历届复赛、国赛真题 651
  • C++入门5 名字空间|new|虚拟地址 428

最新文章

  • 经五轮面试终于拿到微信的offer,却只能无奈放弃
  • 前端进阶都应该了解的知识点 - INP
  • 万万没想到,用浏览器打开终端竟这么容易实现
2024
05月 35篇
04月 33篇
03月 38篇
02月 17篇
01月 32篇
2023年369篇
2022年220篇
2021年428篇
2020年410篇
2019年70篇
2016年23篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源徐龙象为什么叫黄蛮儿博赢财富张宏杰死麻雀B站怎么看直播回放唐诗起名女孩名字大全集诗词楚辞取名起名大全江南易林起名网2018袁姓男孩起名你却用离开烫下句点二胡独奏视频江苏省国家税务局网上办税系统spa起名成长故事鸡年宝宝起名网好听的成语起名冤家衣解布一截我真的没想重生公司起名带亮的国家药品不良反应姓缪女孩起名大全易经起测名打分新浪星座运势awm绝地求生小说计算机信息管理方姓起名女人剩余公主nba全场比赛回放录像巨蟹三生三世枕上书电视剧全集免费观看淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化