美文网首页
2018-09-26前端面试之CSS总结

2018-09-26前端面试之CSS总结

作者: 前端吴彦祖 | 来源:发表于2018-09-26 17:00 被阅读13次

    定位机制

    css有三种基本定位机制: 标准文档流(Normal flow), 浮动(Floats)和绝对定位(Absolute positioning)。

    标准文档流

    从左到右,从上向下,输出文档内容

    由块级元素(从左到右撑满页面,独占一行,触碰到页面边缘时自动换行的元素, 如div, ul, li, dl, dt, p)和行级元素组成(能在同一行内显示并且不会改变HTML文档结构,如span, input)

    浮动

    设置为浮动的元素将会往左(float:left)或者往右(float:right)漂移, 直到遇到阻挡 - 其他浮动元素或者父元素的边框。浮动元素不在标准文档流中占据空间,但会对其后的浮动元素造成影响。

    绝对定位

    设置为绝对定位的元素(posistion:absolute)将从标准文档流中删除,其所占据的标准流空间也不存在。然后通过top,left,right,bottom属性对其相对父元素进行定位。

    QQ群786276452

    Flex布局

    Flexbox又叫弹性盒模型。它可以简单使用一个元素居中(包括水平垂直居中),可以让扩大和收缩元素来填充容器的可利用空间,可以改变源码顺序独立布局,以及还有其他的一些功能。

    Flex布局是我最喜欢的布局,合理使用它能够大大减少布局方面的工作, 例如以上列举的三列布局也可以使用flex轻松实现。此外在移动端使用flex也比较常见。

    使用请参考:

    CSS flex完全指南

    flex历险记

    响应式布局(Responsive Web Design)

    响应式布局是指,网页可以自动识别设备屏幕宽度,根据不同的宽度采用不同的CSS的样式,从而达到兼容各种设备的效果。

    响应式布局使用媒体查询(CSS3 Media Queries), 根据不同屏幕分辨率采用不同CSS规则, 使用方式如下:

    @media screen and (max-width:1024px) {

    /* 视窗宽度小于1024px时 */

    ....

    }

    Bootstrap grid系统的实现

    Bootstrap是很受欢迎的HTML, CSS和JS框架, 用于开发响应式布局和移动设备优先的Web项目。它提供了一套响应式,移动优先的流式栅格系统(grid system),将屏幕分成12列来实现响应式的。它的实现原理非常简单,Media Query加上float布局,如果想了解实现细节,请参考我另外一篇博客Boostrap网格系统。

    CSS reset

    CSS reset的目的是为了将不同浏览器自带样式重置,达到保持浏览器一致性的目的;reset.css通常是样式设计开始之前第一个引用的CSS文件。

    TODO:

    Normalize.css

    CSS hacks

    不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题。而这个针对不同的浏览器写不同的CSS 代码的过程,就叫CSS Hack。

    CSS Hack常见的有三种形式:CSS属性Hack、CSS选择符Hack以及IE条件注释Hack, Hack主要针对IE浏览器。

    TODO:

    常用css hacks技巧

    CSS sprite

    把网页中的一些零星背景图片整合到一张图片当中,再利用CSS背景图片定位属性定位到要显示的位置,因此也叫图片拼合技术。

    好处:减少文件体积和服务器请求次数,从而提高开发效率。一般情况下保存为PNG-24,可以设计出丰富多彩的图标。

    难处:你需要预先确定每个图标的大小。注意小图标与小图标之间的距离。

    实现方式: background-image + background-position。

    TODO:

    如何制作CSS sprite图

    iconfont字体

    iconfont是指使用字体文件取代图片文件,来展示图标和一些特殊字体等元素。它使用CSS3中的@font-face属性,它允许加载自定义字体样式,而且它还能够加载服务器端的字体文件,让客户端显示客户端所没有安装的字体。它有很多优势: 首先它的体积要比图片小得多; 特定的属性(颜色,大小,透明)等修改起来就像是操作字体一样简单;iconfont具有矢量性, 放大缩小不会失真;

    使用步骤:

    设计师设计出Icon矢量图,需要保存为多种格式(可以使用一些online webfont工具完成)。

    EOT(Embedded OpenType Fonts) IE专用格式

    WOFF(The Web Open Font Format) Web字体最佳格式, 它是一个开放的TrueType/OpenType的压缩版本。09年被开发, 如今是W3C阻止的推荐标准。

    TTF(TrueType Fonts) MacOS和WIN操作系统中最常见格式。

    SVG(SVG Fonts) 用于SVG字体渲染的一种格式, W3C制定的开放标准图形格式。

    制作完成之后,进行字体声明。由于各个浏览器支持的字体文件不同, 所以要声明多种字体达到浏览器兼容的目的。声明格式如下:

    @font-face {

    font-family: ;

    src: [ [format( #)]?| ] #;

    font-weight: ;

    font-style: ;

    }

    在网页中使用字体。主要有两种方式: 一种是直接在网页中输入相应的Icon所代表的字体;另一种是使用CSS after伪类, 这样可以通过CSS直接控制Icon类别,只是IE6不兼容。

    第一种方式:

  1. �FD
  2. 第二种方式:

    .icon:after{

    content: '�FD';

    }

  3. 推荐:

    IconMoon图标工具

    Font Awesome

    CSS3常见新特性

    新的元素选择器

    E:nth-last-child(n), E:nth-of-type(n), E:nth-last-of-type(n), E:last-child, E:first-of-type, E:only-child, E:only-of-type, E:empty, E:checked, E:enabled, E:disabled, E::selection, E:not(s)

    @font-face

    见上文中iconfont部分。

    border-radius

    又称圆角属性,通常使用该属性将图片圆角化,如头像。

    border-radius: 50%;

    border-radius另外一个常用的手段是CSS动画。

    word-wrap & text-overflow

    word-wrap属性用来指出浏览器在单词内进行断句,防止字符串太长而找不到它的自然断句点时产生的溢出。

    word-wrap: break-word;

    text-overflow用于文本溢出:

    单行缩略的实现如下:

    .oneline {

    white-space: nowrap; //强制文本在一行内输出

    overflow: hidden; //隐藏溢出部分

    text-overflow: ellipsis; //对溢出部分加上...

    }

    多行缩略实现如下(主要针对webkit内核):

    .multiline {

    display: -webkit-box !important;

    overflow: hidden;

    text-overflow: ellipsis;

    word-break: break-all;

    -webkit-box-orient: vertical;

    -webkit-line-clamp: 2;

    }

    background

    主要是以下三个属性:

    background-clip 规定背景的绘制区域, 取值为border-box | padding-box | content-box | no-clip

    background-origin 规定背景的定位区域, 取值为border | padding | content

    background-size 规定背景图片的尺寸, 取值为[<length> | <percentage> | auto]{1,2} | cover | contain

  4. 相关文章

      网友评论

          本文标题:2018-09-26前端面试之CSS总结

          本文链接:https://www.haomeiwen.com/subject/exljoftx.html