-
Notifications
You must be signed in to change notification settings - Fork 840
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 #29
Comments
现在不加入适配 iPhone X 的代码都不潮流了啊 |
买不起😂,所以把这个忽略了,好像忘记发邀请码了 @rccoder |
比较有意思,收藏了 |
有意思,请发一个邀请码 |
可以的 之前 我改光标颜色 用的color 最后被我们家ui 放弃彩色光标了 |
我也是无意看见别人网站是彩色光标,才去审查元素发现的😂 |
1024社区邀请码两枚,有缘人得,遵守版规,请勿害人害己😂 3179d910fe2fa1c7 | 2017-09-26 09:39:10 | | | 未使用 | 邀请 32462f99aa3c537a | 2017-09-26 09:39:10 | | | 未使用 | 邀请 @rccoder 沙发优先级比较高,233 |
好多细节,,,谢谢笔者分享 |
2码已用~ ~~~多谢撸主 |
好几张图片只能加载一部分,见鬼了🙁 |
已邀请,请勿再试。想要邀请码的可以订阅watch,每篇文章都会发邀请码😂 32462f99aa3c537a | 2017-09-26 09:39:10 | 唇上的罗曼史 | 2017-09-26 09:45:50 | 已邀请 |
第一个码我用啦,多谢大佬。 |
呜呜呜求码 |
原来有这么多技巧啊 我可能是个假的程序员 |
高手 |
第12点感觉教程不完整啊。 |
我来补充一些吧: |
感谢补充@margox |
感觉自己弱爆了! |
干货,以后应该可以用得到 |
赞👍 |
学习了!多谢博主引流。。我说今天仓库star人数猛增 😂 😂 |
国服第一切图仔果然浪得虚名😂,好仓库人人都会自觉star学习一波。 |
mark |
great work! |
右边这个导航栏隐藏得有点深 |
棒棒哒 |
@jawil @chokcoco GitHub 的问题,我已经反馈过了,但一直没回复 dear-github/dear-github#249 即使用第三方图床 GitHub 也会自己转一次。。。 |
text-align-last 兼容性有点差啊,一般还是display:inline-block;+text-align:justify; |
@kalasoo 你的评论怎么编辑的? |
@jawil 掘金喜欢标签怎么编辑的? |
@ricosmall 如果您的文章分享到了掘金上,就可以通过分享页面就可以了。更多细节请看: |
mk |
高产啊 |
补充一个用得比较少的伪元素,可以改变选择文本时高亮的样式 .container::selection {
background: red;
} |
非常棒!! |
补充一个用CSS animation的 step 几行代码 模拟打字的动画 |
mark |
第一个不知道为什么提示信息与原有文字有大概一像素的偏移?? |
mark |
太妙了 |
@jawil
|
感谢斧正 @w3cmark |
你好! |
是滴 @sunshineliang 自己写个demo就可以看到效果了 |
@jawil
我查了下资料,
我的理解应该是 .nav li:first-child ~ li (不包括第一个li) li { /* ul > li:not(:last-child)::after { /* ul li + li::before { .nav li:first-child ~ li::before { |
之前不久,由于自己平时涉猎还算广泛,总结了一篇博客:这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已,没想到受到了大家的欢迎,有人希望能博主还能整理个
CSS
的一些黑魔法小技巧,无奈我CSS
一直很渣,没什么干货,最近写了一个Chrome
插件 GayHub,算是把GitHub
的样式审查了个变,在写的过程中,也收获了很多关于CSS
的小技巧,尤其是开始的第一个技巧,学习到了很多,于是再加上一波搜集,就诞生这篇博文,欢迎补充~~~😂。1、利用
CSS
的content
属性attr
抓取资料需求
想必大家都想到了伪元素
after
,但是文字怎么获得呢,又不能用JavaScript
。CSS
的伪元素是个很強大的东西,我们可以利用他做很多运用,通常为了做一些效果,content:" "
多半会留空,但其实可以在里面写上attr
抓资料哦!在
attr
里面塞入我们在html
新增的data-msg
属性,这样伪元素(:after)
就会得到该值。最终效果
同样的,你还可以结合其他强大的选择器使用,例如:使用属性选择器选择空链接
显示没有文本值但是
href
属性具有链接的a
元素的链接:这样做很方便。
2、利用用
:valid
和:invalid
来做表单即时校验需求
html5
丰富了表单元素,提供了类似required
,email
,tel
等表单元素属性。同样的,我们可以利用:valid
和:invalid
来做针对html5表单属性的校验。:required
伪类指定具有required 属性的表单元素:valid
伪类指定一个通过匹配正确的所要求的表单元素:invalid
伪类指定一个不匹配指定要求的表单元素代码
更多伪元素技巧可以参看这篇文章:你不知道的CSS
最终效果
3、利用
nth-of-type
选择某范围内的子元素需求
代码
最终效果
你也这样来做,选择5-10的子元素。
4、让文字像古诗一样竖着呈现
需求
这是segmentfault的回到顶部,他的实现很简单,就是设置一定宽度让其折行,如果我要实现这种需求呢?
代码
writing-mode
这个CSS
属性,我们是不是很少见到,很少用到!我们往往称不常见的东西为“生僻”,就像是不常见的文字我们叫“生僻字”,因此不常见的CSS
属性,我们可以叫做“生僻属性”,writing-mode
给我们的感觉就是一个“生僻属性”,很弱,可有可无。这个属性可以追溯到IE 5.5
时代,兼容性是相当好的。最终效果
更多细节与讨论请移步张鑫旭老师的这篇文章:改变CSS世界纵横规则的writing-mode属性
5、实现鼠标悬浮内容自动撑开的过渡动画
需求
如下图所示:
而用
CSS3
实现的话,由于高度的不确定,而transtion
是需要具体的树枝,所以设置height:auto
是无法实现效果的,可以通过max-height
这个属性间接的实现这么个效果,css
样式是这样的:代码
最终效果
跟前面
GIF
差不多,这里就不录GIF
了,有兴趣的可以自己尝试感受一下6、利用
pointer-events
禁用a
标签事件效果需求:
pointer-events
是一个用于HTML
指针事件的属性。pointer-events
可以禁用HTML
元素的hover/focus/active
等动态效果。默认值为
auto
,语法:pointer-events: auto | none | visiblepainted | visiblefill | visiblestroke | visible | painted | fill | stroke | all;
代码
最终效果
好像没什么效果😂
7、
CSS
如何实现文字两端对齐需求
代码
最终效果
8、使用
:not()
去除导航上不需要的属性需求
代码
当然,你可以使用
.nav li + li
(不包括第一个li) 或者.nav li:first-child ~ li
(不包括最后一个li), 但是使用:not()
的意图特别清晰,CSS
选择器按照人类描述它的方式定义边框。最后效果
或者,你已经学习了一些关于 使用 :not(),你还可以尝试:
9、移动web页面支持弹性滚动
需求
传统
pc
端中,子容器高度超出父容器高度,通常使用overflow:auto
可出现滚动条拖动显示溢出的内容,而移动web
开发中,由于浏览器厂商的系统不同、版本不同,导致有部分机型尤其是IOS
机型不支持弹性滚动,从而在开发中制造了所谓的BUG
。代码
-webkit-overflow-scrolling
属性具有继承效果,所以在body
上设置即可,这样局部滚动条就非常的流畅了。最终效果
所有滚动条都相当的流畅了
10、美化浏览器自带的
radio
,checkbox
属性需求
记得刚开始写页面时候,被浏览器各种默认的
UI
样式恶心到了,当初确实也没啥办法,反正也不影响功能,就那样吧。先讲一下原理:checkbox hack技术
今天教大家一种方法,不用替换图片,随意修改样式。
代码
这里只给一个
radio
单选框的代码,仅供参考:最终效果
美化radio单选框在线预览地址:点击我呀
美化checkbox复选框在线预览地址:点击我呀
更多关于这方面的介绍和例子可以参看张鑫旭大神的这篇文章:CSS radio/checkbox单复选框元素显隐技术
11、改变
input
焦点光标的颜色需求
代码
最终效果
12、
rem
布局不再使用JavaScript
设置这里不探讨
rem
的原理以及细节,还不熟悉的童鞋建议去恶补一下。需求
例如:以
750px
设计稿作为基准,根节点设置font-size
为100px
,只考虑DPR
为2
的情况,只考虑最简单的情况代码
现在移动端
css3
单位vw
,wh
兼容性已经很不错了,在不需要兼容太低版本的安卓机情况下可以这样来:最终结果
就这么简单的设置,
rem
就可以使用了13、利用
transparent
属性实现各种三角形,提示框需求
代码
最终效果
复杂点的话,同样的原理还可以实现一个五角星,原理都是利用
transparent
的透明属性。14、让网站所有图片变成黑白色彩的
需求
代码
最终效果
15、实现文字的波浪线效果
需求
相信大家对于
text-decoration
这个属性并不陌生,在重置a
标签的默认样式时,我们经常要这样写:text-decoration: none;
可能对它了解的人也很少,实际上text-decoration
是一个复合属性,由line
、style
和color
组成。所以我们可以实现这样的效果:
可惜的是
line
只有underline
(下划线)、overline
(上划线)和line-through
(删除线)。如果突然需要下划波浪线,怎么办呢?不要急,神奇的CSS
会帮你做到的。首先,你需要先了解一下渐变的使用技巧。说一下这里的思路,我们首先要用两段渐变构造一个基本元素:'X'(这里我就不放图了),下一步就比较重要了,我们要截取'X'的上半部分,得到一个'V',从而结合
repeat
形成波浪线。下面是用scss
写的一个mixin
,方便以后使用。代码
最终效果
兼容性
这些技巧在当前版本的
Chrome
,Firefox
,Safari
, 以及Edge
, 和IE11
可以工作,移动端基本都没问题,IE
重度开发者慎用。相关兼容性自行查找:https://caniuse.com/
推荐一波
有趣的 GitHub 仓库
国服第一切图仔的 CSS 仓库:你想知道的 CSS 奇技淫巧,在这里,都有。iCSS -- interesting css
张鑫旭老师的博客
前端技术
受益颇多,所以推荐一波。😂
The text was updated successfully, but these errors were encountered: