前端面试基础题——CSS

CSS 选择器的优先级是如何计算的?

css选择器有哪些?优先级?哪些属性可以继承?

请阐述Float定位的工作原理

请阐述z-index属性,并说明如何形成层叠上下文(stacking context)

媒体查询是什么?@media 除了screen还有@import的用法

什么是重排和重绘,更改哪些属性会触发重排和重绘,如何避免?

css预处理器是什么?

CSS 外边距(margin)重叠及防止方法

浏览器渲染大致流程

什么时候需要清除浮动?clear

你有没有使用过视网膜分辨率的图形?当中使用什么技术?

css3 min-device-pixel-ratio属性 解决高清的图片适配

设备像素比devicePixelRatio

元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

justify-items水平方向,align-litems垂直方向

flex:1所代表的含义

如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?



伪类与伪元素?


伪元素本质上是创建了一个虚拟容器(元素)
伪类其实是弥补了CSS选择器的不足,用来更方便地获取信息



css预处理器的优缺点?

优点:

提高 CSS 可维护性。

易于编写嵌套选择器。

引入变量,增添主题功能。可以在不同的项目中共享主题文件。

通过混合(Mixins)生成重复的 CSS。

Less 用 JavaScript 实现,与 NodeJS 高度结合。

缺点:

通过node-sass使用 Sass,它用 C ++ 编写的 LibSass 绑定。在 Node 版本切换时,必须经常重新编译。

Less 中,变量名称以@作为前缀,容易与 CSS 关键字混淆,如@media、@import和@font-face。


使用非标准字体的网页设计,如何实现?
网页安全字体这个概念前端们应该都清楚,那遇到非网页安全字体为了保证网页在用户电脑中显示不破坏页面整体的设计,通常少量的文字可以用图片来代替,也可以用Javascript的Cufon来画出这个字体。那实际上这些字体都是付费使用的,这两种做法都有可能引发一些侵权的问题,也会在一定程度上拖慢网页的浏览速度。所以现在推荐使用@font-face,通过将字体文件上传到服务器端来保证客户端的显示一致。

@font-face使用方法

购买Web版权字体,可以从商家手上获取到.eot和.woff两种扩展名的字体文件。将之放到服务器的网站文件夹中任一位置。

在CSS中加入@font-face申明(以下路径可以使用相对路径):

@font-face {

font-family: 'MyFont';

src: url('WebFont.eot');

src: url('WebFont.eot?#iefix') format('embedded-opentype'), url('WebFont.woff') format('woff');

}

在需要使用该字体的地方,直接添加CSS属性font-family:

P  {

font-family:'MyFont',Arial;

}


css绘制三角形

在以前也讲过盒子模型,默认情况下是一个矩形,实现也很简单

<style>.border{width:50px;height:50px;border:2px solid;border-color:#96ceb4 #ffeead #d9534f #ffad60;}</style><divclass="border"></div>

效果如下图所示:

将border设置50px,效果图如下所示:

白色区域则为width、height,这时候只需要你将白色区域部分宽高逐渐变小,最终变为0,则变成如下图所示:

这时候就已经能够看到4个不同颜色的三角形,如果需要下方三角形,只需要将上、左、右边框设置为0就可以得到下方的红色三角形

但这种方式,虽然视觉上是实现了三角形,但实际上,隐藏的部分任然占据部分高度,需要将上方的宽度去掉

最终实现代码如下:

.border{width:0;height:0;border-style:solid;border-width:0 50px 50px;border-color:transparent transparent #d9534f;}

【先确定border-color中transparent的方向,再确认boder-width的值即可】

如果想要实现一个只有边框是空心的三角形,由于这里不能再使用border属性,所以最直接的方法是利用伪类新建一个小一点的三角形定位上去

.border{width:0;height:0;border-style:solid;border-width:0 50px 50px;border-color:transparent transparent #d9534f;position:relative;}.border:after{content:'';border-style:solid;border-width:0 40px 40px;border-color:transparent transparent #96ceb4;position:absolute;top:0;left:0;}

效果图如下所示:

伪类元素定位参照对象的内容区域宽高都为0,则内容区域即可以理解成中心一点,所以伪元素相对中心这点定位

将元素定位进行微调以及改变颜色,就能够完成下方效果图:

最终代码如下:

.border:after{content:'';border-style:solid;border-width:0 40px 40px;border-color:transparent transparent #96ceb4;position:absolute;top:6px;left:-40px;}


重绘重排与合并?

当DOM的样式或内容会被修改时,将触发重新渲染。除了属性值计算、单位换算外,渲染主要分为三个步骤:

布局:计算盒模型的位置,大小

绘制:填充盒模型的文字、颜色、图像、边框和阴影等可视效果

合并:所有图层绘制后,按层叠顺序合并为一个图层

重新渲染一般有三种执行路径:

重排:布局 → 绘制 → 合并

重绘:绘制 → 合并

合并

出处链接:https://juejin.cn/post/6983190159646801927


BFC?

就像是一个具有物理属性的盒子。

一个 HTML 盒(Box)满足以下任意一条,会创建块格式化上下文:

float的值不是none.

position的值不是static或relative.

display的值是table-cell、table-caption、inline-block、flex、或inline-flex。

overflow的值不是visible。

在 BFC 中,每个盒的左外边缘都与其包含的块的左边缘相接。

两个相邻的块级盒在垂直方向上的边距会发生合并(collapse)


overflow:hidden立大功

//一行展示省略号

white-space: nowrap;//翻译:“空格:不换行”

text-overflow: ellipsis;//省略号

overflow: hidden;

word-break: break-all; //非必需

// 两行以上展示省略号

text-overflow: ellipsis;

overflow: hidden;

display: -webkit-box;

-webkit-box-orient: vertical;

-webkit-line-clamp: 2;


伪类实现小圆点

.todo-title {

color: #6190e8;

font-size: 36px;

display: inline-flex;

justify-content: space-between;

width: 200px;

align-items: center;

&::before {

content: ''; display: block; width: 30px; height: 30px; background:#6190e8; border-radius: 50%; margin-right: 6px; }

}



本文主要用于个人前端学习,部分问题节选自链接文章,侵权即删。

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

推荐阅读更多精彩内容