【布局】慕课网实战宣传页面的header

1. CSS让表格里的内容强制显示一行,超出长度显示省略号

在写html页面的时候,会经常用到表格,而且很多时候一个tr里边需要包含好几个td,这样就会导致tr的高度不一致,被撑开了,这时候,如果能让td里的内容强制显示在一行,并让超出边界范围的内容显示点点,然后再给td加个title属性,显示当前td的内容,这难道不是最理想的结果吗

.table{  table-layout: fixed;  }

.td{  text-overflow: ellipsis;   overflow: hidden;   white-space: nowrap;    }

备注:

1、table-layout需要设置为fixed,用来固定表格布局,(这个属性非常非常有用,对于提升页面性能,这样就不会每次当表格宽度变化的时候自适应td宽度。) 当然给每个td加宽度也可以,但是显然没有前者更高效

2、white-space需要设置为nowrap,用来强制不换行

3、overflow设置为hidden,内容溢出的时候不显示

4、text-overflow设置为ellipsis, 内容溢出的时候,溢出部分显示为...

PS:还有小伙伴是在td里面加了个div,对div设置样式:style="width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;"


2.文字隐藏小技巧

text-indent:-999px;  overflow:hidden;

首先将 文字挤出去,因为 text-indent 是负的缩进,所以,缩紧着就把它们给移除固定位置了,再然后,将所有的溢出元素都隐藏起来,就达到了将button上的文字隐藏的效果了。

但这个是有弊端的,具体可看文章:慎用text-indent的负值。


3. 慕课网实战宣传页面里header中的布局-logo

先来看一下效果吧,某个高手的响应式开发教程,但慕课网是专业的,我是简化的,只是在学习它的一点点布局。(感觉自己哪儿哪儿都是缺口,只能补一点是一点啦)

这个是经典布局咯,左边是图片logo,紧接着是不同的选项卡,在后面是搜索框,还有最后才是账号相关的信息。而且,点击小头像时,会出现用户的相关信息。看了下它的源码,记录如下:

慕课网header中样式

左边logo:建站过过程中朋友喜欢把网站名称用H1表示,但从美观考虑,要用logo图片来代替h1,这时需要隐藏h1内的这段文字,但又不能对搜索引擎不友好,否则就失去了定义h1标签的意义。在CSS中如何以图代字,参考文章CSS技巧: CSS隐藏文字的方法(CSS text-indent: -9999px;)

.hide-text {  text-indent: 100%;  white-space: nowrap;  overflow: hidden;  }

再为a链接加上 display:block ; height & width ; 就足够啦,哈哈~

【布局】慕课网实战宣传页面的header_第1张图片
网站logo的代码及注释

4. 慕课网实战宣传页面里header中的布局-Nav

【布局】慕课网实战宣传页面的header_第2张图片
Nav布局padding的巧用

5. 慕课网实战宣传页面里header中的布局-登录模块

登录模块分为三个部分,购物车,提醒和登录。

【布局】慕课网实战宣传页面的header_第3张图片
float:right及选择器的巧用

购物车的模块其实也比较复杂啦,特别是当鼠标滑上去的时候,就可以看到下方多了一个框框。

【布局】慕课网实战宣传页面的header_第4张图片
鼠标滑过,出现了详情框

具体的代码是这样的,在这个li里面,a和div都是存在的。只是div被隐藏了。

【布局】慕课网实战宣传页面的header_第5张图片
购物车模块

提醒模块就比较简单啦。只是要去学习icon及小图标。

【布局】慕课网实战宣传页面的header_第6张图片
提醒模块

icon头上的小图标,原理很简单,就是设置父元素相对定位,标签元素绝对定位,然后相对于父元素偏移到右上角。

登录模块的逻辑与购物车模块相似,都是鼠标滑过出现div框框。但在这个框框里,信息会更多一点呢,其中需要注意的有 圆形的用户头像,还有,列表挨着边儿的时候,没有margin-right啦。

position:absolute时,right为0,top为100%,为什么会出现100%呢?首先top(bottom)、 left(right)的百分比的相对值分别是相对于包含块的高度、宽度的。而这个g-user-card便是相对于set的底部开始的呢,也是说,这个定位绝对了它的右对齐。但不可以写top为0,否则会将头像覆盖到。但可以不写,不过写了明显规范。具体可以参考这篇讨论。

【布局】慕课网实战宣传页面的header_第7张图片
登录模块

巧用CSS选择器,这样就可以实现margin-right为0 啦。 .g-user-card .user-center-box ul li:nth-child(2n) { margin-right: 0px; }

直接在 a 的里面为 img 设置宽高相同并border-radius为50%,便有了圆形头像;而且,border值给一个呢,margin-right给一个,float为left,就OK啦。



6. 慕课网实战宣传页面里header中的布局-搜索模块

【布局】慕课网实战宣传页面的header_第8张图片
position的巧用

7. 慕课网实战宣传页面里header--WebFont

看到慕课网的代码里不断重复::after。于是,我茫然了。再次总结下after,clear吧:

.clear是选择器,在class设置元素样式为clear; after是个伪元素,.clear:after是在class为clear的元素后面加入新内容。clearfix:after{clear:both;content:".";display:block;height:0; 是用来清除浮动用的。又看到这篇文章,讲述clear:after的重要性。眼睛有点酸痛了,有机会了再看这篇文章吧。

在代码中,我发现一个小i就可以得到一个小图标,于是,我又茫然了。查看代码也不过是看到这些:.sz-search:before{ content:"\e910"; }

搜索了一下下,发现有小伙伴问了css中icon font 的每一个icon的编码是怎么来的?具体的解答可以参考这篇文章。同事补充上面的那个问题,伪元素实际上在html dom中不存在,但会被浏览器渲染成html的一个节点。#twitter:before,就是在#twitter这个标签里的开始处插入了一个子元素(节点),同理,:after是在该元素的最后插入子元素。

【布局】慕课网实战宣传页面的header_第9张图片
伪元素到底是什么?

简单说,就是在css中使用font-face引用这个字体文件。比如慕课网的源码中确实有这个代码:

CSS中,font代替icon啦

font-family:'XXX';/* 给你的自定义WebFont命名 */,比如慕课网将其命名为sz,也就是 “实战”。它的好处是不必再使用css spirit切图了,而且作为矢量图可以以任意你想要的尺寸显示,另外,这种方法兼容性很好(ie6 7 可以显示,前提是你为不同的浏览器准备了不同的字体文件格式,如eot、woff、ttf、svg)。

但unicode编码显然不如html的class或者id语义化。因此,就又有了如下的突破:


【布局】慕课网实战宣传页面的header_第10张图片
icon  icon_open 引入图标编码

我想我似乎知道了 :before的故事。

据说比较好用的字体库有icomoon.io呢。

还有 box-sizing:border-box,之前似乎都没有用过。"定义 box-sizing: content-box; 时,浏览器对盒模型的解释遵从我们之前认识到的 W3C 标准,只有width;定义 box-sizing: border-box; 时,浏览器对盒模型的解释与 IE6 相同,包括了border和padding。 " 

你可能感兴趣的:(【布局】慕课网实战宣传页面的header)