先别着急,看看下面这些小标题,是否能完整回答上来?不会的直接点标题跳转^v^
1、介绍一下标准的css的盒子模型?低版本的IE的盒子模型有什么不同的?
2、伪类和伪元素有什么区别?列举常用的伪类和伪元素?css选择器优先级是什么?
3、几种常见的css布局?通过什么方式实现?
4、网页中应该使用奇数还是偶数的字体?为什么呢?字体单位有哪些?
5、BFC是什么?有什么用?开发中的应用是什么?
6、知道css有个content属性吗?有什么作用?有什么应用?
7、如何居中一个div?垂直居中有哪些方法?水平居中有哪些方法?垂直水平居中呢?如何居中一个浮动元素?如何让绝对定位的div居中?
8、全屏滚动的原理是什么?用到了css的哪些属性?
9、你对line-height是如何理解的?三种赋值方式有何区别?(带单位、纯数字、百分比)
10、回流和重绘分别是什么?触发条件?性能影响?如何减少回流和重绘?
11、link与@important的区别?
· 有两种:怪异(IE)盒子模型、W3C盒子模型;
盒模型:content、padding、border、margin
区别:IE的content部分把border和padding部分算了进去
IE8及其以下版本浏览器,未声明DOCTYPE,内容宽高会包含内填充和边框,成为怪异盒模型( IE盒模型 )
标准(W3C)盒模型:元素宽度 = width + padding + margin + border
怪异(IE)盒模型:元素宽度 = width + margin
标准浏览器通过设置css3的box-sizing:border-box,触发怪异模式解析宽高。
box-sizing常用的属性有哪些?分别有什么作用?
box-sizing: content-box; 默认的标准(W3C)盒模型
box-sizing:border-box;怪异盒模型
box-sizing:inherit;继承父元素box-sizing属性的值
伪类和伪元素:共同作用是给元素添加一些特殊的效果或样式
伪类:用于选择某个元素的特定状态
伪元素:用于创建一些虚拟的元素
伪类:
:hover
用于选择鼠标悬停在元素上时的状态:active
用于选择元素被激活(例如被点击)时的状态: focus 用于聚焦时改变状态
: focus-within 元素或者其子元素聚焦时都会匹配
:vistied a是否访问过
:enabled 和:disabled 能访问和不能访问
注意:a标签设置disabled属性无效,而非a元素配合pointer-events: none实现
:readonly 和:readwrite,匹配是否设置了readonly属性的输入框元素
注意:只对input和textarea有效
:root 匹配的就是html根元素标签
:first-child和:last-child 用于匹配父元素的第一个/最后一个子元素
:only-child 匹配只有一个子元素的元素
:nth-child(n) 和:nth-last-child(n) 匹配第n个子元素/匹配从后往前数第n个子元素
注意:
:nth-child(odd/even) 奇数/偶数
:nth-child(-n + 3) 匹配前三个元素
:first-of-type 和:last-of-type 匹配那些具有相同标签的第一个/最后一个子元素
:only-type-of 匹配子元素中标签类型与selector元素一致且只有一个的selector元素
注意:匹配:only-child的元素一定匹配:only-of-type,反之则不一定
:nth-of-type() 和nth-last-type() 匹配那些具有相同标签的第n个/从后往前数n个
:not() 否定伪类
注意:
:not()伪类自身优先级为0,最终的优先级由()的选择器表达式决定
:not()伪类可以不断级联,如input:not(:disabled):not(:read-only){ }
:is() 可以把括号中的选择器依次分配出去,对于那种复杂的有很多逗号分隔的选择器非常有用
注意::is()最终的优先级由()的选择器表达式决定
伪元素:
::first-letter 表示第一个字母
::first-line 表示第一行
::selection 选中的内容
::before 元素的开始位置
::after 元素的结束位置
选择器优先级:
!important > id > class > tag 注意:!important 比内联优先级高
单列布局: 没什么要点,用margin :auto达到水平居中即可
.contenter {
margin: auto;
}
双列布局
偶数字号相对更容易和web设计的其他部分构成比例关系。
px:固定值
em:继承父级元素的字体大小,默认1em=16px。em = 像素值 / 父级font-size
rem:相对长度单位,可以做移动适配
html {
font-size: 20px;
}
<div style="font-size: 1rem;">111</div> //20px
<div style="font-size: 2rem;">222</div> //40px
注意:如何做移动适配:以设计稿400px为例,移动设备 / 设计稿宽度 * x = x px,x为任意整数值
BFC: 块级格式上下文block formatting context ,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响
应用:
阻止margin重叠;自适应两栏布局;可以阻止元素被浮动元素覆盖;可以包含浮动元素(清除内部浮动)
BFC布局规则:浮动的元素会被父级计算高度(父级元素触发了BFC)
非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC)
margin不会传递给父级(父级触发BFC)
属于同一个BFC的两个相邻元素上下margin会重叠
content属性专门应用在before/after伪元素上,用来插入生成内容。最常见的是利用伪类来清除浮动
.clearfix:after {
content:"."; //这里利用到了content属性
display:block;
height:0;
visibility:hidden;
clear:both; //清除左右两边的浮动
}
水平居中:
1、flex+margin:auto
2、flex+justify-content :center
3、定位 + bottom + right + top + left 0 + margin : auto
4、grid + justify-self :center + align-self :center
5、定位 + left 50% + margin-left - 一半的px值
垂直居中:
1、line-height
水平垂直居中:
1、absolute + bottom + right + top + left 0 + margin : auto
2、absolute + left 50% + top 50% + margin-left/top - 一半的px值
3、flex+justify-content :center + align-items:center
原理类似于轮播图,超出的部分隐藏,滚动时显示
可能用到的css属性:overflow: hidden; transform: translate(100%, 100%); display:none
line-height 指一行字的高度,包含了字间距,实际上是下一行基线到上一行基线的距离
如果一个标签没有定义height属性,那么其最终表现的高度是由line-height决定的
一个内容没有设置高度,那么撑开容器高度的是line-height而不是容器内的文字内容
把line-height值设为height一样大可以实现单行文字的垂直居中
line-height 和 height 都能撑开一个高度,height会触发haslayout,而line-height不会
重绘:当元素的样式改变需要浏览器重新绘制样式
回流:当元素的大小、隐藏、位置改变,需要浏览器重新计算元素几何信息,以及重新渲染页面时,会影响当前元素,祖先元素和后代元素。
触发条件:
- 添加或删除可见的DOM元素
- 元素尺寸改变
- 内容变化,例如用户在input框中输入文字
- 页面渲染初始化
- 浏览器窗口尺寸改变 —— 触发重排(回流)。
性能影响:
- 回流比重绘的代价要高。回流的过程比重绘复杂,因为它涉及到更多的计算。
- 回流必将引发重绘,而重绘不一定会引发回流。
如何减少回流和重绘:
使用transform替代top。
使用visibility替换display: none —— 因为前者只会触发重绘,后者会触发回流(重排)。
不要使用table布局,因为可能很小的一个小改动会导致整个table的重新布局。
避免在循环中对DOM进行频繁操作,可以使用documentFragment进行批量操作。
container.style.padding = '20px'; //触发回流,改变元素大小
container.style.borderWidth = '5px';
//使用cssText合并成一次操作
container.style.cssText = 'padding: 20px; border-width: 5px;';
let list = document.getElementById('list'),
frag = document.createDocumentFragment(),
items = ['Item 1', 'Item 2', 'Item 3'];
// 使用DocumentFragment作操作
items.forEach(item => {
let li = document.createElement('li');
li.textContent = item;
frag.appendChild(li);
});
// 把DocumentFragment一次性添加到DOM中,减少页面回流
list.appendChild(frag);
1、link是HTML方式,@import是css方式
2、link最大限度支持并行下载,@import过多嵌套导致串行下载,出现FOCU(文档样式短暂失效)
3、link可以通过rel = “ alternate stylesheet”指定候选样式
4、浏览器对link支持早于@import,可以使用@import对老浏览器隐藏样式
5、@import必须在样式规则之前,可以在css文件中引用其他文件
6、总体来说,link优于@import
文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99
文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效
文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是
文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件
文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件
文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码
文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware
文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停
文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待
文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析
文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code
文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象