user-select 禁止用户选中文本
  1. div {
  2. user-select: none; /* Standard syntax */
  3. }
清除手机tap事件后element 时候出现的一个高亮
  1. * {
  2. -webkit-tap-highlight-color: rgba(0,0,0,0);
  3. }
修改浏览器的滚动条样式 ::-webkit-scrollbar-thumb
  1. 可以修改浏览器的滚动条样式。IE火狐可能不支持。
使用CSS transforms 或者 animations时可能会有页面闪烁的bug
  1. -webkit-backface-visibility: hidden;
-webkit-touch-callout 禁止长按链接与图片弹出菜单
  1. -webkit-touch-callout: none;
transform-style: preserve-3d 让元素支持3d
  1. div {
  2. -webkit-transform: rotateY(60deg); /* Chrome, Safari, Opera */
  3. -webkit-transform-style: preserve-3d; /* Chrome, Safari, Opera */
  4. transform: rotateY(60deg);
  5. transform-style: preserve-3d;
  6. }
perspective 透视

这个属性的存在决定你看到的元素是2d还是3d。一般设置在包裹元素的父类上。

  1. .div-box {
  2. perspective: 400px;
  3. }
css实现不换行、自动换行、强制换行
  1. //不换行
  2. white-space:nowrap;
  3.  
  4. //自动换行
  5. word-wrap: break-word;
  6. word-break: normal;
  7.  
  8. //强制换行
  9. word-break:break-all;
box-sizing 让元素的宽度、高度包含border和padding
  1. {
  2. box-sizing: border-box;
  3. }
calc() function, 计算属性值

https://www.w3schools.com/cssref/func_calc.asp

  1. div {
  2. width: calc(100% - 100px);
  3. }

上面的例子就是让宽度为100%减去100px的值,项目中很适用,IE9以上

垂直居中
  1. <div class="box box1"><span>我是垂直居中元素</span></div>
  2. <div class="box box2"><span>我是垂直居中元素</span></div>
  3. <div class="box box3"><span>我是垂直居中元素</span></div>
  4. <div class="box box4"><span>我是垂直居中元素</span></div>
  5. <div class="box box5"><span>我是垂直居中元素</span></div>
  6. <div class="box box6"><span>我是垂直居中元素</span></div>

方法1:dispaly:table-cell

  1. .box1{ text-align:center; display:table-cell; vertical-align:middle; }

方法2:display:flex

  1. .box2{ display:flex; justify-content:center; align-items:center; text-align:center; }

方法3:translate(-50%,-50%)

.box3{ position:relative;} .box3 span{ position:absolute; left:50%; top:50%; -webkit-transform:translate(-50%,-50%); width:100%; text-align:center; }

方法4:display:inline-block

  1. .box4{ text-align:center; font-size:; } .box4 span{ vertical-align:middle; display:inline-block; font-size:16px; } .box4:after{ content:''; width:; height:100%; display:inline-block; vertical-align:middle; }

方法5:margin:auto

  1. .box5{ display:flex; text-align:center; } .box5 span{ margin:auto; }

方法6:display:-webkit-box

  1. .box6{ display:-webkit-box; -webkit-box-pack: center; -webkit-box-align: center; text-align:center; }
内容两端对齐

方法一:使用text-align:justify

text-align:justify 属性是全兼容的,使用它实现两端对齐,需要注意在模块之间添加[空格/换行符/制表符]才能起作用,同样,实现文本对齐也是需要在字与字之间添加[空格/换行符/制表符]才能起作用

  1. <div class="demo">
  2. <a class="link" href="#none">10元</a>
  3. <a class="link" href="#none">20元</a>
  4. <a class="link" href="#none">30元</a>
  5. <a class="link" href="#none">50元</a>
  6. </div>
  1. *{margin:;padding:;}
  2. /*
  3. 说明:
  4. 1.IE中要实现块内单行两端对齐需要使用其私有属性text-align-last:justify配合,text-align-last 要生效,必须先定义text-align 为justify
  5. 2.line-height:0 解决标准浏览器容器底部多余的空白
  6. */
  7. .demo{
  8. text-align:justify;
  9. text-align-last:justify;
  10. line-height:;
  11. height:44px;
  12. }
  13. /*
  14. 说明:
  15. 模块使用[换行符]或[空格符]后,webkit浏览器中会引起最后一个模块有多余空白,使用font-size:0可清除该空格
  16. */
  17. @media all and (-webkit-min-device-pixel-ratio:0){
  18. .demo{
  19. font-size:;
  20. }
  21. }
  22. /*
  23. 说明:
  24. 1.text-align-last:justify 目前只有IE支持,标准浏览器需要使用 .demo:after 伪类模拟类似效果
  25. 2.opera浏览器需要添加 vertical-align:top 才能完全解决底部多余的空白
  26. */
  27. .demo:after{
  28. display:inline-block;
  29. overflow:hidden;
  30. width:100%;
  31. height:;
  32. content:'';
  33. vertical-align:top;
  34. }
  35. .demo a{
  36. width:20%;
  37. display:inline-block;
  38. height:44px;
  39. line-height:44px;
  40. text-align:center;
  41. border:1px solid #428cc8;
  42. color:#666;
  43. font-size:16px;
  44. margin-bottom:5px;
  45. border-radius:3px;
  46. background-color:#fefefe;
  47. color:#666;
  48. text-decoration:none;
  49. }

demo

方法二 使用justify-content:space-between

box-pack是css3的新属性,依赖于display:box(旧版弹性布局),受box-orient影响,box-pack决定了子标签水平对齐的方式,可选值有start | end | center | justify。使用box-pack:justify来实现两端对齐非常简单,代码量也少。为了向前看齐,把display:flex(新版弹性布局)也一起写进去

  1. <div class="demo">
  2. <a class="link" href="#none">10元</a>
  3. <a class="link" href="#none">20元</a>
  4. <a class="link" href="#none">30元</a>
  5. <a class="link" href="#none">50元</a>
  6. </div>
  1. *{margin:;padding:;}
  2. /*
  3. 说明:
  4. display:box定义布局为盒模型后,可使用盒模型下的box-pack:justify属性
  5. */
  6. .demo{
  7. display:-webkit-box;
  8. display:-webkit-flex;
  9. display:-ms-flexbox;
  10. display:flex;
  11. -webkit-box-pack:justify;
  12. -webkit-justify-content:space-between;
  13. -ms-flex-pack:justify;
  14. justify-content:space-between;
  15. }
  16.  
  17. .demo a{
  18. width:20%;
  19. display:block;
  20. height:44px;
  21. line-height:44px;
  22. text-align:center;
  23. border:1px solid #428cc8;
  24. color:#666;
  25. font-size:16px;
  26. margin-bottom:5px;
  27. border-radius:3px;
  28. background-color:#fefefe;
  29. color:#666;
  30. text-decoration:none;
  31. }
demo

方法三 使用column(多列布局)

  1. <div class="demo">
  2. <a class="link" href="#none">10元</a>
  3. <a class="link" href="#none">20元</a>
  4. <a class="link" href="#none">30元</a>
  5. <a class="link" href="#none">50元</a>
  6. </div>
  1. *{margin:;padding:;}
  2. /*
  3. 说明:
  4. 1.column-count定义了对象的列数,例子中有4个模块,那么定义为4列
  5. 2.column-gap定义了对象中列与列的间距,间距不能设置为百分比,显得不够灵活
  6. */
  7. .demo{
  8. -webkit-column-count:;-moz-column-count:;column-count:;
  9. -webkit-column-gap:20px;-moz-column-gap:20px;column-gap:20px;
  10. }
  11.  
  12. .demo a{
  13. display:block;
  14. height:44px;
  15. line-height:44px;
  16. text-align:center;
  17. border:1px solid #428cc8;
  18. color:#666;
  19. font-size:16px;
  20. margin-bottom:5px;
  21. border-radius:3px;
  22. background-color:#fefefe;
  23. background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
  24. color:#666;
  25. text-decoration:none;
  26. }

demo

will-change提高页面滚动、动画等渲染性能
  1. /* 关键字值 */
  2. will-change: auto;
  3. will-change: scroll-position;
  4. will-change: contents;
  5. will-change: transform; /* <custom-ident>示例 */
  6. will-change: opacity; /* <custom-ident>示例 */
  7. will-change: left, top; /* 两个<animateable-feature>示例 */

will-change的使用也要谨慎,遵循最小化影响原则,不要这样直接写在默认状态中,因为will-change会一直挂着:

  1. .will-change {
  2. will-change: transform;
  3. transition: transform 0.3s;
  4. }
  5. .will-change:hover {
  6. transform: scale(1.5);
  7. }

可以让父元素hover的时候,声明will-change,这样,移出的时候就会自动remove,触发的范围基本上是有效元素范围。

  1. .will-change-parent:hover .will-change {
  2. will-change: transform;
  3. }
  4. .will-change {
  5. transition: transform 0.3s;
  6. }
  7. .will-change:hover {
  8. transform: scale(1.5);
  9. }

如果使用JS添加will-change, 事件或动画完毕,一定要及时remove. 比方说点击某个按钮,其他某个元素进行动画。点击按钮(click),要先按下(mousedown)再抬起才出发。因此,可以mousedown时候打声招呼, 动画结束自带回调,于是(示意,不要在意细节):

  1. dom.onmousedown = function() {
  2. target.style.willChange = 'transform';
  3. };
  4. dom.onclick = function() {
  5. // target动画哔哩哔哩...
  6. };
  7. target.onanimationend = function() {
  8. // 动画结束回调,移除will-change
  9. this.style.willChange = 'auto';
  10. };
伪元素实现换行,替代换行标签

《CSS SECRET》 中对 br 标签的描述是,这种方法不仅在可维护性方面是一种糟糕的实践,而且污染了结构层的代码,运用 after 伪元素,可以有一种非常优雅的解决方案

  1. inline-element ::after{
  2. content:"\A";
  3. white-space: pre;
  4. }

通过给元素的 after 伪元素添加 content 为 “\A” 的值。这里 \A 表示的是什么呢?有一个 Unicode 字符是专门代表换行符的:0x000A 。 在 CSS 中,这个字符可以写作 “\000A”, 或简化为 “\A”。这里我们用它来作为 ::after 伪元素的内容。也就是在元素末尾添加了一个换行符的意思。而 white-space: pre; 的作用是保留元素后面的空白符和换行符,结合两者,就可以轻松实现在行内级元素末尾实现换行。

增强用户体验,使用伪元素实现增大点击热区

尤其是在移动端,按钮通常都很小,但是有时由于设计稿限制,我们不能直接去改变按钮元素的高宽。那么这个时候有什么办法在不改变按钮原本大小的情况下去增加他的点击热区呢?这里,伪元素也是可以代表其宿主元素来响应的鼠标交互事件的。借助伪元素可以轻松帮我们实现,我们可以这样写:

  1. .btn::befoer{
  2. content:"";
  3. position:absolute;
  4. top:-10px;
  5. right:-10px;
  6. bottom:-10px;
  7. left:-10px;
  8. }
参考文章

http://www.cnblogs.com/coco1s/p/5667853.html

https://juejin.im/post/58da53b7ac502e0058e70abf

http://www.zhangxinxu.com/wordpress/2015/11/css3-will-change-improve-paint/

一些实用而又记不住的css技巧的更多相关文章

  1. 总是记不住但又总是要用的css

    有没有经常遇到一些样式每次写都要用百度呢?我收集了一些我平时经常要用到的但又总是记不住的样式.有错误的地方欢迎指正.转载请注明出处. 一.设置input 的placeholder的字体样式 input ...

  2. 这些年一直记不住的 Java I/O

    参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Documentati ...

  3. 英语每日阅读---8、VOA慢速英语(翻译+字幕+讲解):脸肓症患者记不住别人的脸

    英语每日阅读---8.VOA慢速英语(翻译+字幕+讲解):脸肓症患者记不住别人的脸 一.总结 一句话总结: a.neural abnormalities are more widespread:Duc ...

  4. Grid属性太多记不住?【Grid栅格布局可视化编辑器】直观易懂高效,拖拉拽,有手就行!

    手把手教你通过拖拉拽可视化的方式带你练习[Grid栅格布局]的各个属性,直观易懂!再也不愁记不住繁多的Grid属性了.整个过程在众触应用平台进行,不用手写一行CSS代码. grid-auto-flow ...

  5. MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题

    ///MVC4.0中项目发布遇到IE11时session存入URL中,导致记不住密码的问题,在webconfig中配置<system.web><authentication mode ...

  6. 简单实用的下拉菜单(CSS+jquery)

    原文 简单实用的下拉菜单(CSS+jquery) 没什么可以说的,直接上例子 html+jquery代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  7. Git 记不住命令

    Git 记不住命令 每次用每次查 真棒 git log --stat --author=someone # git查询某个人修改记录 git log filename # fileName相关的com ...

  8. $.ajax 方法参数总是记不住,在这里记录一下

    jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...

  9. 100个实用的CSS技巧,以及遇见的问题和解决方案。

    前言 本篇文章将会持续更新,我会将我遇见的一些问题,和我看到的实用的CSS技巧记录下来,本篇文章会以图文混排的方式写下去.具体什么时候写完我也不清楚,反正我的目标是写100个.  本案例都是经本人实测 ...

随机推荐

  1. 使用Homebrew安装MySQL

    安装命令: brew install mysql 安装完成之后,启动mysql: mysql.server start 发现无此命令: command not found 首先,检查是否是安装了.重新 ...

  2. QQ信鸽推送

    闲来无事,看看腾讯的信鸽推送! 优点: 1.毕竟大腿出的东西,不会太差 2.集成快 3.推送效率高,功能强,APP后台被杀的情况下同样能接受到推送. 废话少说,直接上代码: 源代码.zip

  3. Hibernate快速入门实例

    Hibernate工程项目创建基本步骤:导包(Hibernate依赖包.SQL驱动包).编写实体类.编写ORM映射配置文件.编写核心配置文件.编写测试驱动. 整个工程项目结构如下图: 一.导包 笔者使 ...

  4. [故障公告]14:40-15:00博客站点web服务器雪崩似的CPU 100%

    非常抱歉,今天下午14:40-15:00左右,web服务器突然雪崩似的出现CPU 100%问题,造成博客站点无法访问(503).由此给您带来很大的麻烦,请您谅解. 在问题出现之前,博客站点运行着5台w ...

  5. linux 配置Apache 、PHP

    1. 安装 Apache 安装apache,首先要使用管理员权限,如果如法获取请联系您的管理员. centos: yum install httpd httpd-devel 2. 安装PHP 同样也需 ...

  6. usaco training 4.2.4 Cowcycles 题解

    Cowcycles题解 Originally by Don Gillies [International readers should note that some words are puns on ...

  7. webpack初步介绍

    我们通过npm -g可以安装一个webpack的东西. npm -g叫做全局安装,通常是安装CLI程序(commond line interface). 我们只用过一次,装了cnpm.此时就能在CMD ...

  8. voa 2015 / 4 / 19

      potentially – adv. capable of becoming real, a possibility tackle – v. to deal with a difficult pr ...

  9. ArrayList源码浅析(jdk1.8)

    ArrayList的实质就是动态数组.所以可以通过下标准确的找到目标元素,因此查找的效率高.但是添加或删除元素会涉及到大量元素的位置移动,所以效率低. 一.构造方法 ArrayList提供了3个构造方 ...

  10. JavaScript一个猜数字游戏

    效果图: 代码: <body> <script type="text/javascript"> window.onload = newgame; //页面载 ...