CSS控制网页打印样式:
使用CSS控制打印样式,握刚刚使用时一塌糊涂,根本不知道CSS中的midia的作用是什么,问到别人说导入这个样式,还傻乎乎的不知所措。如果你也有这种现象,那么我告诉你吧,在W3school查到CSS的midia的作用。
midia 定义和用法:
media 属性规定被链接文档将显示在什么设备上。
media 属性用于为不同的媒介类型规定不同的样式。
原来用到media来指定css的媒体类型,它的语法格式有这样几种:
@media screen | print | projection | braille | aural | tv | handheld | all
参数说明:
screen:指计算机屏幕。
print:指用于打印机的不透明介质。
projection:指用于显示的项目。
braille:盲文系统,指有触觉效果的印刷品。
aural:指语音电子合成器。
tv:电视类型的媒体。
handheld:指手持式显示设备。
all:用于所有媒体。
只要导入将不想打印的东西加入下面这CSS样式声明中,将在打印的页面不会出现:
<link media="print" type="text/css" href="https://www.linuxidc.com/print.css" />
例如:
<style midia="print">//midia必须声明,不然无效了
#my_hidden{display:none;}
</style>
在书写高效 CSS 时会有哪些问题需要考虑?
1)reset。参照上题“描述下 “reset” CSS 文件的作用和使用它的好处”的答案。
2)规范命名。尤其对于没有语义化的html标签,例如div,所赋予的class值要特别注意。
2)抽取可重用的部件,注意层叠样式表的“优先级”。
使用 CSS 预处理器的优缺点有哪些?(SASS,Compass,Stylus,LESS)
(这里我会实话实说)过去一直没有机会接触“预处理器”,缺的不是学习的热情和动力,而是一种会使用到这门高深技术的需求,希望日后参与的项目将会用到这门技术,能够将学习揉入实际开发中。关于CSS 预处理器,我知道是一种语言用来为 CSS 增加一些编程的的特性,无需考虑浏览器的兼容性问题,例如你可以在 CSS 中使用变量、简单的程序逻辑、函数等等在编程语言中的一些基本技巧,可以让你的 CSS 更见简洁,适应性更强,代码更直观等诸多好处。
描述下你曾经使用过的 CSS 预处理的优缺点。
如果设计中使用了非标准的字体,你该如何去实现?
1)图片替代
2)好是跟产品沟通,尽量使用默认就有的字体。虽然我们可以用webfonts,但它在页面加载的时候会将整个字体包都下载下来,这对于手机端网页来说无疑是致命的。如果产品一定要用非标准字体,可用这个软件FontCreator,可以从一个字体包中将你这个页面需要的那几个字提取出来,打成一个新的字体包,这样会节省很多流量
Webfonts (字体服务例如:Google Webfonts,Typekit 等等。)
解释下浏览器是如何判断元素是否匹配某个 CSS 选择器?
浏览器会根据css rules 与dom tree 生成render tree。浏览器先产生一个元素集合,这个集合往往由最后一个部分的索引产生(如果没有索引就是所有元素的集合)。然后向上匹配,如果不符合上一个部分,就把元素从集合中删除,直到真个选择器都匹配完,还在集合中的元素就匹配这个选择器了。
举个例子,有选择器:
body.ready #wrapper > .lol233
先把所有 class 中有 lol233 的元素拿出来组成一个集合,然后上一层,对每一个集合中的元素,如果元素的 parent id 不为 #wrapper 则把元素从集合中删去。 再向上,从这个元素的父元素开始向上找,没有找到一个 tagName 为 body 且 class 中有 ready 的元素,就把原来的元素从集合中删去。
至此这个选择器匹配结束,所有还在集合中的元素满足。
大体就是这样,不过浏览器还会有一些奇怪的优化。为什么从后往前匹配因为效率和文档流的解析方向。
1)效率,找元素的父亲和之前的兄弟比遍历所有儿子快而且方便。