css的一些小技巧和注意事项

1.文字少时居中显示,文字超过一行居左显示

.box{
text-align:center
}
.content{
display:inline-block;
text-align:left
}

inline-block元素的包裹性:文字越多宽度越宽(内部尺寸特性),但如果文字足够多,则会在容器的宽度处自动换行(自适应性).
除了inline-block元素,浮动元素以及绝对定位元素都具有包裹性(shrink-to-fit,收缩到合适),均有类似的智能宽度行为。

2. 超过三行显示省略号

.box{
display:-webkit-box;
overflow:hidden;
text-overflow:ellipsis;
-webkit-line-clamp:3;
-webkit-box-orient:vertical;

}

单行省略号

.item{
white-space:nowrap;
overflow:hidden;
width:100%;
text-overflow:ellipsis;
}

3.收起展开的过渡动画

.element{
max-height:0;
overflow:hidden;
transition:max-height .25s;
}
.element .active{
max-height:666px; //一个足够大的高度值
}
4.基于伪元素生成图片提示信息
img::after{
//生成alt信息
content:attr(alt);
position:absolute;bottom:0;
width:100%;
background-color:rgba(0,0,0,.5);
transform:translateY(100%);
transition:transform 0.2s;//过渡动画
}
img:hover::after{
//alt信息显示
transform:translateY(0)
}

原理:替换元素和非替换元素的区别在于src属性。<img>如果没有src属性,就是一个普通的内联元素。当添加src属性,图片从普通元素变成替换元素,原本支持的::before和::after此时完全无效

5.解决height :100%无效

(1) 父元素设置显示的高度值

html,body{
      height:100%
}

(2) 使用绝对定位

div{
      height:100%;
      position:absolute;
}

区别:
绝对定位的宽高百分比计算是相对于padding box的,也就是说会把padding 大小值计算在内
非绝对定位元素则是相对于content box 计算的。

6.对fixed定位的剪裁
fixed-clip{
       position:fixed;
       clip:rect(30px 200px 200px 20px)
}

7.让页面的滚动条不发生晃动

html {
      overflow-y:scroll;
}
:root{
      overflow-y:auto;
      overflow-x:hidden;
}
:root body{
      position:absolute;
}
body{
      width:100vw;
      overflow:hidden;
}

8. 设置浏览器滚动条样式

整体部分 ::-webkit-scrollbar
两端按钮 ::-webkit-scrollbar-button
外层轨道 ::-webkit-scrollbar-track
内层轨道 ::-webkit-scrollbar-track-piece
滚动滑块 ::-webkit-scrollbar-thumb

平常开发一般会设置下面三个属性:

::-webkit-scrollbar{  //血槽宽度
        width:8px;height:8px
}
::-webkit-scrollbar-thumb{  //拖动条
        background-color:rgba(0,0,0,.3);
        border-radius:6px;
}
::-webkit-scrollbar-track{  //背景槽
        background-color:#ddd;
        border-radius:6px
}

9. 锚点定位

(1)利用<a>标签以及name属性

<a href="#1">发展历程 </a>
<a name="1"> </a>

(2)使用标签的id属性

<a href="#1">发展历程</a>
<h2 id="1">发展历程 </h2>

10. 阻止margin合并

margin合并是发生在垂直方向
对于margin-top合并,可以进行如下操作(满足一个条件即可)

父元素设置为块状格式化上下元素
父元素设置boder-top值
父元素设置padding-top值
父元素和第一个子元素之间添加内联元素进行分隔

对于margin-bottom合并,可以进行如下操作(满足一个条件即可)

父元素设置为块状格式化上下文元素
父元素设置border-bottom值
父元素设置padding-bottom值
父元素和最后一个子元素之间添加内联元素进行分隔
父元素设置height、min-height或者max-height

margin合并的意义在于可以避免不小于遗落或者生成的空标签影响排版和布局

11. 块状元素右对齐

.father{
      width:300px;
}
.son{
        width:200px;
        margin-left:auto;
}
image.png

12. 设置hover的阴影

 box-shadow:0 3px 32px 0 rgba(0,0,0,.04), 0 6px 36px 0 rgba(0,0,0,.05), 0 10px 40px 0 rgba(0,0,0,.02);

13. border妙用

(1)画三道杠

.icon-menu{
        width:120px;
        height:20px;
        border-top:60px double;
        border-bottom:20px solid;
}

(2)待加号的上传按钮

<a href class="add" title="继续上传">
  添加图片
</a>
.add {
    display: inline-block;
    width: 76px; height: 76px;
    color: #ccc;
    border: 2px dashed;
    text-indent: -12em;
    transition: color .25s;
    position: relative;
    overflow: hidden;
}
.add:hover {
    color: #34538b;
}
.add::before, .add::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
}
.add::before {
    width: 20px;
    border-top: 4px solid;
    margin: -2px 0 0 -10px;
}
.add::after {
    height: 20px;
    border-left: 4px solid;
    margin: -10px 0 0 -2px;
}

当没有指定border-color颜色值的时候,会使用当前元素的color计算值作为边框值
(3)利用透明border增加元素的点击区域大小

.icon-clear{
        width:16px;
        height:16px;
        border:11px solid transparent;
}

(4)三角形绘制

div{
      width:0;
      border:10px solid;
      border-color:blue transparent transparent;
}

注意事项

  • 当float和absolute同时存在时,float属性是没有任何效果的。
.box{
      position:absolute;
      float:left; //无效
}
  • <span>元素默认是inline水平,但是一旦设置position:absolute,其display计算值就会变成block
  • 可以单独设置position:absolute,如果没有设置left/right/top/bottom,并且其祖先元素全部是非定位元素,其位置还是在当前位置
  • 会触发BFC的情况:
  1. <html>根元素
  2. float的值不为none
  3. overflow的值为auto、scroll、或者hidden
  4. display的值为table-cell、table-caption、和inline-block中的任何一个
  5. position的值不为relative 和 static
  • IE7及以上版本浏览器适配的自适应解决方案:
    (1) .bfc-content { overflow:hidden }
    (2) .bfc-content{ dispaly:table-cell;width:9999px; word-break:break-all }

  • 除非overflow-x 和overflow-y 的属性值都是visible,否则visible会被当成auto解析

  • 在PC端,窗体的滚动高度可以使用document.documentElement.scrollTop获取,但是在移动端可能就要使用document.body.scrollTop获取

  • position为relative时,只有一个方向的定位属性会起作用。默认的文档流是自上而下,从左到右。因此top/bottom同时使用时,只有top生效,left/right同时使用时,只有left生效。

.example{
        position:relative;
        top:10px;
        bottom:10px;//无效
        left:10px;
        right:10px;//无效
}

14. 非替换元素的纯内联元素,其高度完全由line-height决定。

完全,即什么padding、border属性的可视高度是没有任何影响的,这也是我们平常口中的'盒模型'约定俗成说的是块级元素的原因

15.第一行文字,其上方是半行距

在css中,“行距”分散在当前文字的上方和下方,也就是即使是第一行文字,其上方也是有“行距"的,只不过这个“行距”的高度仅仅是完整“行距”的一半,因此,也被称为“半行距”

16.vertical-align只能应用于内联元素,以及display 值为table-cell的元素

vertical-align的百分比值时相对于line-height计算的。

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