作家
登录

CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

作者: 来源: 2017-09-28 09:38:01 阅读 我要评论

或者,你已经进修了一些关于 应用 :not(),你还可以测验测验:

/* 选择1到3的元素并显示 */li:not(:nth-child(-n+3)){  display: none;}

9、移动web页面支撑弹性滚动

需求

在IOS机型中,非body元素的滚动条会异常不流畅,又不想用JS模仿滚动条。

传统 pc 读闼楝子容器高度超出父容器高度,平日应用 overflow:auto 可出现滚动条拖动显示溢出的内容,而移动 web 开辟中,因为浏览器厂商的体系不合、版本不合,导致有部分机型尤其是 IOS 机型不支撑弹性滚动,大年夜而在开辟中制造了所谓的 BUG 。

代码

这里不商量 rem 的道理以及细节,还不熟悉的童鞋建议去恶补一下。

需求

有时刻,移动端用 rem 构造时刻,根据不合的屏幕宽度要设置不合的 font-size 来做到适配,要写一坨 JS 来设置,能不克不及不消JS呢?

body{-webkit-overflow-scrolling: touch; /* ios5+ */}ele{overflow:auto;}
<div class="container">    <div class="row" style="margin-top: 2rem;">      <form>        <div class="form-group">          <label>name</label>          <input type="text" required placeholder="请输入名称">        </div>        <div class="form-group">          <label>email</label>          <input type="email" required placeholder="请输入邮箱">        </div>        <div class="form-group">          <label>homepage</label>          <input type="url" placeholder="请输入博客url">        </div>        <div class="form-group">          <label>Comments</label>          <textarea required></textarea>        </div>      </form>    </div>  </div>

-webkit-overflow-scrolling 属性具有持续效不雅,所以在 body 上设置即可,如许局部滚动条就异常的流畅了。

最终效不雅

所有滚动条都相当的流畅了

10、美化浏览器自带的 radio , checkbox 属性

需求

设计师:你那个单选框按钮好丑啊,跟我的设计稿差好远。法度榜样员:我有什么办法,浏览器就是如许的。。。

记得刚开端写页面时刻,被浏览器各类默认的 UI 样式恶心到了,当初确切也没啥办法,反正也不影响功能,就那样吧。

先讲一下道理:checkbox hack技巧

我们应用 CSS 一些特别的选择器,然后合营单选框以及复选框自带的一些特点,可以实现元素的显示隐蔽效不雅。然后经由过程一些简单的扩大,我们可以不应用任何 JavaScript 代码实现类似:自定义的单复选框,“更多”展开与收起效不雅,选项卡切换效不雅,或是多级下拉列表效不雅等等。

信赖很多前端开辟人员都邑碰到 boss 让修改 checkbox 和 radio 样式,毕竟自带的样式太丑了。后来我们发明修改自带样式并不是那么轻易,最后直接使出杀手锏——点击之后调换图片。

今天教大年夜家一种办法,不消调换图片,随便修改样式。

先讲一下道理:两个关键东东,一是伪类选择器 :checked ,表示对应控件元素(单选框或是复选框)选中时的样式;二就是加号 + 相邻兄弟选择器,这个符号表示选择后面的兄弟节点。于是,两者合营,就可以轻松自如控制后面元素的显示或者隐蔽,或是其他样式了。

更多细节与评论辩论请移步张鑫旭师长教师的┞封篇文┞仿: 改变CSS世界纵横规矩的writing-mode属性

5、实现鼠标悬浮内容主动撑开的过渡动画

需求

须要为一个列表添加个动画,容器的高度是不肯定的,也就是高度为 auto ,悬浮时刻撑开内容有个过渡动画

<div class="radio-beauty-container">    <label>        <span class="radio-name">前端工程师</span>        <input type="radio" name="radioName" id="radioName1" hidden/>        <label for="radioName1" class="radio-beauty"></label>    </label>    <label>        <span class="radio-name">后端工程师</span>        <input type="radio" name="radioName" id="radioName2" hidden/>        <label for="radioName2" class="radio-beauty"></label>    </label>    <label>        <span class="radio-name">全栈工程师</span>        <input type="radio" name="radioName" id="radioName3" hidden/>        <label for="radioName3" class="radio-beauty"></label>    </label></div>
.radio-beauty-container {    font-size: 0;    $bgc: green;    %common {        padding: 2px;        background-color: $bgc;        background-clip: content-box;    }    .radio-name {        vertical-align: middle;        font-size: 16px;    }    .radio-beauty {        width: 18px;        height: 18px;        box-sizing: border-box;        display: inline-block;        border: 1px solid $bgc;        vertical-align: middle;        margin: 0 15px 0 3px;        border-radius: 50%;        &:hover {            box-shadow: 0 0 7px $bgc;            @extend %common;        }    }    input[type="radio"]:checked+.radio-beauty {        @extend %common;    }}	
				
			

  推荐阅读

  对于未来互联网:AI创造了什么,毁灭了什么

近日,国外研究机构Internet Society宣布了题为《Paths to Our Digital Future(2017)》(中文译为:通往数字将来之路)的申报,阐述了后互联网时代的变革驱动力,这里对变革驱动力之一人>>>详细阅读


本文标题:CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

地址:http://www.17bianji.com/lsqh/37641.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)