css技巧与积累-相信会让你有收获的!

本文是本人在工作期间,总结到的对css的一些积累,或者是经验,希望能够帮助到读者,求个赞~~~

2018-05-17 更新 补充8
2017-12-20 更新 15

1.还在为盒子宽度增加margin或者padding而烦恼吗,赶紧把盒子设置为IE盒子模型吧,以前w3c还认为他们的盒子模型比IE好,历史证明IE终于硬了一把了~,让你远离烦恼
*,*:before, *:after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
2.当用块级盒子包裹图片事,图片底部会出现间隙,可以让图片也变成块级原始来避免这个间距

eg:

<div><img src="..."/><div>
div img{display:block}
img.png
3.当在谷歌浏览或其他浏览器中,点击登录过的input的话,选中input会出现黄色的背景,可以用你任何想要的颜色阴影来覆盖那个黄色背景,这里我假设用白色
input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0px 1000px white inset !important;
}

input.png
4.清除浮动
.clearfix{zoom:1;}
.clearfix:after{
        content:"";
        display: block;
        visibility: hidden;
        clear: both;
        overflow: hidden;
        line-height:0;
}
5.在知道高度的情况下,单行文字垂直居中,假设需要在高度为30px的盒子里,文字垂直居中
.hei30{
        height:30px;
        line-height:30px
}

但是在移动端上,确实有偏差,可以使用flex来解决这个问题,具体

.flex_line_v{
         display:-webkit-flex;
         display:flex;
         height:30px;
         -webkit-align-items:center;
         align-items:center;
}
6.单行超出显示省略号
.ep{
      white-space: nowrap;
      text-overflow: ellipsis;
      overflow: hidden;
      display: block;
}
7.n行内文字超出显示省略号
.ep_n{ 
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: n;    //n表示想要几行内显示
      overflow: hidden;
}
overflow.png

实例图片是n=3

Android UC浏览器只支持display: box语法。而iOS UC浏览器则支持两种方式(同一家公司的浏览器,由于平台不一样,支持程度还不一样。

-webkit-line-clamp使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端,还有,可能你会想,既然可以display:box,那可以用display:flex,代替吗?但是确实不行,说明他们两个在某些情况下确实表现不一样,有待研究了。知道的读者可以跟我说下哈~

8.不想在拖拽的时候,文字被选中
.no-select{
   -moz-user-select:none;
   -webkit-user-select:none;
   user-select:none;
}
9.当你有很多列表,有时候需要对特殊列表进行操作,例如,
<div class="box">
      <div><div>
      <div><div>
      <div><div>
      <div><div>
      <div><div>
      <div><div>
<div>
.box{width:900px;}
.box div{
   width:280px;
   margin-right:30px;
   float:left;
}

我想让.box里面的div一行显示3个,所以需要让box里面3倍数的div的margin-right为0,这时候可以用css3提供的:nth-child(n)

.box div:nth-child(3n){margin-right:0;} 

注意这里的n的值为1开始,有人说,我单独为特殊div添加类名也是可以啊,但是,但是,后台要嵌入程序,那肯定保持结构一致的,哈,你想用js去判断?大哥能用css的情况下,就不要麻烦js啦,(你非要用我也阻止不了你啊),所以,你懂的~,还有另外一种实现思路,大家请看

.box{
   width:930px;
   margin:0 -15px;
}
.box div{
   width:280px;
   margin-left:15px;
   margin-right:15px;
}

还有一种就是使用flex,万能布局方案,手机端任意用,pc端就看各位权衡咯~//但效果还是杠杠的。
具体使用哪一种都有利弊吧,怎么权衡就是大家思考的问题啦~

10.三角标的做法

类似于三角标的做法,帮助大家理解下,假设,我们设置一个盒子的宽,高度都为0,那么我们直接给这个盒子10px的边框,分别用不同颜色写出,可以很清楚的看出来,如果我们想要那个方向的三角标,就可以把其他方向三角标的边框颜色设置为透明,就可以搞定了,类似的直角三角标,等等,可以根据数学知识算出来~~

.eg{
   width:0;
   height:0;
   border-left:20px solid orange;
   border-top:20px solid yellow;
   border-right:20px solid green;
   border-bottom:20px solid pink;
}
<div class="eg"></div>
border.png
11.移动端1px太粗解决方案

各位小伙伴是不是遇到过,当我们用1px solid #ddd,这个1px显得很粗,跟微信的那些分割线对比起来的话,这个元素是DPR的原因啦,具体可以参考移动web开发之像素和DPR;
那解决的方案呢,有很多种,这里推荐两种解决方案。
第一钟媒体查询方案:
eg:

.border { border: 1px solid #999 }
@media screen and (-webkit-min-device-pixel-ratio: 2) {
    .border { border: 0.5px solid #999 }
}
@media screen and (-webkit-min-device-pixel-ratio: 3) {
    .border { border: 0.333333px solid #999 }
}

第二种 利用缩放进行压缩
eg:div下需要个1px的下边框

<div class="div"></div>
.div{position:relative;}
.div:after{
   content:"";
   position:absolute;
   left:0;
   width:100%;
   height:1px;
   -webkit-transform:scaleY(.5);
   transform:scaleY(.5);
   bottom:0;
}

当需要垂直方向的边框线(比如,左边框线或右边框线,也是同样道理,就压缩X了)也是同样思路。

12.::selection 可设置文字被选择时的样式

::selection {
background: #FE6E66;
color: #FFF;
}

13.使用字体图标的解决方案

每做一个项目,都会用到图标,如果老是使用图片,那对网页多少会有影响,所以,我推荐两个解决方案。
第一个是 Iconfont-阿里巴巴矢量图标库
用法也非常简单,可以去官网看一下试一下,看到哪个图标就加上哪个图标,还可以添加项目成员,并且在小程序项目也可以用到,居家必备良品,非常推荐,关键是国产的,中文那是必须的~国产万岁。

第二个是Font Awesome
这个是国外的开源字体库,也有中文版本的,已经给出连接了,那图标也是相当给力,用法简单,和阿里巴巴类似~不过并且不断再更新,也很给力,风格很统一。

14.调试元素不同状态样式影响

有时候,我们发现,自己去自定义表单的时候,会出现那些蓝色的外边框,但是却不知道怎么不要这些,其实这些事浏览器自带的样式,这不过比较隐晦,还有bootstrap的默认样式也有,具体代码是

input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
}
focus.png

outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。和边框类似,但是轮廓线不会占据空间,也不一定是矩形。如下图,我们需要先调试出是那部分影响的,可以使用谷歌浏览器进行调试,

调试.png

打开开发者工具,选中需要调试的目标,如下图

可以有不同状态的切换,依次选中的话,可以很方便的知道是什么样式影响了,谷歌开发工具是调试利器,可能刚开始我们不是很熟悉,所以很多问题都没有用这个来调试解决,希望能给到读者(大神绕路~)提醒有这个功能哈

15.使用display:flex;需要对文字尽行显示一行并且超出的的是显示省略号的坑

首先我们来看下背景,先不写浏览器兼容前缀啦,原谅我懒...
css

.wrap{display: flex;width:800px;margin-left: auto;margin-right: auto;}
.other_box{width:80px;height:80px;background:gold;}
.box{display: flex;flex:1;width:100%;}
.box_l{width:80px;height:80px;background:orange;}
.box_r{flex:1;background:pink;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}

html

<div class="wrap">
    <div class="other_box">我只是一段文字</div>
    <div class="box">
        <div class="box_l">我只是一段文字</div>
        <div class="box_r">
                          在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。
                          尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去
                          处理 DOM 事件细节。
                  </div>
    </div>
</div>

故事是这样的,我用flex的时候,要保证box_r里面的文字单行显示并且文字超出显示省略号


ellipsis.png

当然啦,不知道出什么问题,结果就成了这样了,莫慌~
解决方案呢,比较简单粗暴的就是在box添加overflow:hidden,也就是在你嵌套的需要做这种处理的外面的盒子添加overflow:hidden。这种解决方案只能视你需求而定啦,原因我也不清楚,只知道这样可以解决,等我查明真相,我会公布出来,知道的小伙伴也可以告诉我哈。。。


ellipsis_2.png
16、在移动端,在iOS的浏览器中,如果写一个有点击事件的按钮,这个按钮如果没有添加cursor:pointer;有时候是点击不了的,但是在安卓上是没有问题的。为了让按钮的点击事件能够触发,可以添加cursor:pointer

未完,待续哦,争取每周都加入新东西(可能有些东西我没加上的,很基础的那种,如果想要了解,小伙伴们可以百度下哈)一本正经的求个赞~

原创文章,转载请注明出处,谢谢欢迎一起讨论交流

欢迎访问我的个人网站zhengyepan

在线兼容性查询caniuse.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,438评论 0 6
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,360评论 0 26
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,703评论 1 92
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,606评论 0 7
  • 题目: DescriptionPolycarpus likes giving presents to Parask...
    科学旅行者阅读 395评论 0 0