面试题之CSS

1. 引入样式的方式

外部样式

link

@import

区别

image-20200815214048651

image-20200815214106398

内部样式

/* 写在头部标签 */
<style>

</style>

行内样式

2. 三行代码画三角形

.triangle{
    width:0px;
    border:100px solid;
    border-color:transparent transparent transparent red;
}

3.属性的继承

可继承的属性

文字属性

font-color: 字体颜色

font-family:字体系列

font-weight:字体的粗细

font-size:字体的大小

font-style:字体的风格

css文本属性

可继承 但是字体颜色遇到a标签,必须给a标签

text-indent:文本缩进

text-align:文本水平对齐

text-decoration 文本修饰

line-height:行高

word-spacing:单词之间的间距

letter-spacing:中文或者字母之间的间距

text-transform:控制文本大小写(就是uppercase、lowercase、capitalize这三个)

列表属性

可继承

list-style:列表风格,包括list-style-type、list-style-image等

不可继承的属性

背景属性

边框属性

其他属性

width height float overflow

4. 单行文本超出时 不换行 隐藏 产生省略号

  • 给定容器宽度 :width value
  • 强制文本在一行内显示 不换行 white-space:nowrap
  • 溢出的内容隐藏:overflow:hidden
  • 溢出时显示省略号 text-overflow:ellipsis

5. css样式属性的层叠(权重)

选择器

  • ID选择器
    • id表示身份,用**#id引用该id,在页面中元素的id不能冲恢复,id选择器只能选择单个元素**
  • 标签选择器
    • 根据标签名称,选择对应的所有标签
  • 类(别)选择器
    • 选择拥有该类的多个元素,用**.class名**引用
  • 通用选择器
    • 针对页面上所有的标签都生效

选择器的权重

  • 一般情况下
    • 行内样式优先生效 > id选择器 > class类选择器 > 标签选择器 > 通用选择器
  • 样式冲突的情况下
    • 谁的权重值高(权重之和),谁就先生效
    • 行内样式权重值为1000
    • ID选择器权重值为100
    • 类选择器权重值为10
    • 标签(元素)择器权重值为1
    • 通配符的权重值为1
    • 通用选择器权重值为0

伪类的权重是10

技巧:选择器选择的范围越小越精确,优先级就越高

6. 元素的类型及特点

块状元素

特点

  • 独占一行或一块区域,竖着排列
  • 可以添加宽高
  • 可以设置margin和padding值,上下左右都生效
  • 可以作为其他元素的父元素

行内元素

特点

  • 在默认情况下,元素是挨着排列
  • 在默认情况下,给元素添加宽高是无效
  • 在默认情况下,给元素添加margin和padding值,仅有左右方向生效,上下不生效

行内块状元素

特点

  • 就是块状元素和行内元素的综合
    • 可以设置宽高的属性,来自块状元素的特点
    • 挨着排列的属性,来自行内元素
  • 与其他元素挨在一起的时候,会有默认间距
  • 它有一个专有属性 vertical-align:top/middle/bottom

可变元素

自己有默认的样式

7. 元素的显示与隐藏

使用display:none隐藏元素
使用:hover{display:block} 鼠标经过时,显示元素

.boss:hover .box{display:block}
/* 最好后面的元素是前面元素的后代,在父级元素上悬停鼠标,元素出现 */

opcatity:0
opcatity:1

vsibility:hidden
visibility:visible

8. css可以取负值的属性

  • background-position
  • text-indent
  • margin-left margin-top
  • position的left right bottom top
  • transform
  • z-index
  • text-shadow 文本阴影的水平和垂直方向
  • flex布局的子元素属性order

注意:padding不可以取负值

9. 图片向下撑大3像素的解决办法

  • 给图片本身添加vertical-align:top/middle/bottom可以解决被撑下来的3px问题 (推荐)
  • 左右方向间距的,给图片加display:block转为块级元素 (推荐)
  • 左右方向间距的,给图片或父元素添加浮动float
  • 可以给图片本身或者图片的父级元素添加float:left (图片右边的边距)
  • 给body{}添加font-size为0 (不推荐)

10. 子元素添加margin-top,父元素下移的解决办法

  • 给父元素添加overflow:hiden

  • 给父元素添加一个上边框

  • 给父元素或者子元素添加浮动(不推荐);

  • 把margin改为padding;

  • 触发BFC

11. 图片在一块区域里做水平垂直居中的实现办法

给父级元素设置line-height和text-align:center,给图片设置vertical-align:middle

12.盒模型包含哪些内容

w3c标准盒模型

margin padding border content

13. 定位的属性值有哪些?各自有什么特点

  • static 默认值,无定位
  • absolute 绝对定位,脱离文档流(飘了),定位使用left/right/top/bottom,控制自己想去的位置
    • 文档流 给元素添加绝对定位之后,元素会飘起来,别人占据自己的位置
    • 参照物 第一种情况 在该元素设置绝对定位之后,它的父元素身上没有任何定位设置的时候,就参照浏览器的的第一屏做定位(开启定位),使用relative最好,当然使用absolute更好
    • 第二种情况 要围绕父元素做位置移动,就父元素添加定位(最好给相对定位)
    • 层级关系 z-index
  • relative 相对定位
    • 文档流 给元素添加position:relative相对定位后,不会脱离文档流,元素没有飘
    • 参照物 有参照物,相对自己原来的位置做移动
    • 层级关系 z-index
  • fixed 固定定位 相对于浏览器整个窗口做固定定位
    • 文档流 给元素添加固定定位后,就飘了(脱离文档流)
    • 参照物 即使页面过大,出现滚动条,仍然相对于浏览器窗口做定位
    • 层级关系 z-index
  • sticky 粘性定位 主要用来做吸顶效果
    • 没有飘,没有脱离文档流
    • 在页面没有滚动条的时候,只有left属性生效
    • 在页面有滚动条的情况下,left top bottom 方向是生效的,主要是top生效,吸顶效果
    • 层级关系 z-index

14. 小盒子在大盒子中水平垂直居中

纯margin

纯padding

纯定位,子绝父相 子元素设置left和top为具体数值

position定位的 left为50%,top为50% ,高宽配合margin回退自己宽高的-一半

position配合top right bottom left 为0 margin为 auto

position定位配合left top 为50%,transform的translate 回退 -50%

flex实现水平垂直居中

display;flex;
justify-content:center;
align-items:center;

grid网格布局

15.透明属性是哪个?它的兼容性是什么

opacity为0 消失

opacity 为1 出现

解决兼容性

过滤器

在google中的写法

  • opacity:0.4

兼容IE8及以下浏览器

  • filter:alpha(opacity=40) 0.4要写成100倍

16 .高度塌陷解决方案

解决方案

  • 给父元素添加高

    • 缺点:不适合自适应的布局
  • 直接给父元素添加float

    • 缺点:遇到高度自适应的时候就不好用了
  • 给父元素设置overflow:hidden或者auto

    • 缺点:遇到定位就不太好用了(超出隐藏)
  • 在浮动元素的下方,加一个非浮动的空盒子,给该盒子添加clear:both清除浮动

    .p1{
        clear:both;
    }
    
    • clear用于清除浮动,有3个值,left/right/both
    • 缺点:页面中太多的空标签会造成标签的冗余
  • 万能清除法(推荐使用)

    给父元素添加clear公共类名,哪里需要清除,在哪里添加类名clear

    .clear:after{
    	content:"";
        display:block;
        height:0;
        clear:both;
        overflow:hidden;
        visibility:hidden;
    }
    
    
    /* 兼容IE6 */
    .clear{
    	zoom:1;
    }
    
  • 给父元素添加浮动

缺点:需要解决新的浮动问题(不推荐)

  • display:table

    缺点:产生未知bug

17. 一屏网页必须添加什么

一个页面不能出现滚动条,宽高同时自适应

一屏网页:宽高同时100%(body和html)

高度塌陷就是,子元素设置浮动之后,父元素没有设置高度或者父元素需要高度自适应的情况:

子元素设置浮动,高度设置height:auto

18. 五大浏览器对应的内核

image-20200715090114486

image-20200715090143953

19. H5有什么特点?请说出6个h5新增加的标签

H5的特点

(1)更简洁、但是在实际开发中要注意书写规范,利于后期维

(2)标签的语义化
语义化的重要性:
① 当页面加载失败的时候,还能够呈现出清晰的结构
② 有利于SEO优化,利于被搜索引擎收录(即便于网络爬虫
的识别)
③ 在项目开发及维护时,语义化的也很大程度上降低开发
难度,节省成本
(3)语法更宽松
(4)多设备跨平台
(5)自适应网页设计

H5的标签

<header>...<header> 头部标签

<footer>...<footer> 尾部标签

<section>...<section> 内容区块

<article>...,article> 表示页面中的独立内容

<aside>...<aside> 标签定义其所处内容之外的内容

<nav>...<nav> 导航

<figure>...<figure>表示一段独立的流内容

<embed>...<embed> embed标签用于定义嵌套的内容,包括各种媒体

<mark>...<mark>高亮显示

  • 可以改变其高亮颜色

<video>...<video> 视频标签

<video src="song.mp3" controls="controls" autoplay=autoplay>
</video>

<audio>...<audio> 音频标签

<audio src="song.mp4" controls="controls" autoplay=:autoplay>
</audio>

<datalist>...<datalist> 智能列表 供其选择

<p>
    /* list里的id要和datalist里的id一致 */
    <input type="text" nmae="a1" list="text">   
</p>

<datalist id="text">
    <option>大班</option>
    <option>班级</option>
    <option>班班</option>
</datalist>

<canvas>...<canvas>canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能

<hgroup>...<hgroup> 标签被用来对标题元素进行分组。

20. 怪异盒

在IE6及其以下版本里,DOCTYPE缺失会触发怪异盒模式

  • 给元素添加的padding值和border值,不会计算在元素原有的宽高,不会把盒子撑大

    /* 可以让W3C标准盒模型变成怪异盒模型 */
    box-sizing:border-box;
    
    
    /* 变成W3C标准盒模型 */
    box-sizing:content-box;
    
    

/* 火狐兼容 */
-moz-box-sizing:content-box;

/* IE兼容 */
-ms-box-sizing:content-box;

/* Opera兼容 */
-o-box-sizing:content-box;


  /* Chrome和sarfi兼容 */
  -webkit-box-sizing:content-box;
  

21. 什么是图片整合技术?css精灵图有什么优势?

优势

image-20200715101100881

22. css3属性有哪些特点和优势?说出8个css3属性

image-20200716094128772

23. 背景大小属性里,那个属性值不会被剪裁

文本效果

1. text-shadow 文本阴影

.text1{
    text-shadow:5px 5px 5px pink;
}
  • h-shadow 水平方位移动的阴影(正值向右,负值向左)
  • v-shadow 垂直方位移动的阴影(正值向下,负值向上)
  • blur 模糊的距离,只能是正值(可选参数)
  • color 阴影的颜色 (可选参数)

2. box-shadow 盒子阴影

阴影是不占据位置的

div
{
   box-shadow: 1px 1px 11px 4px #888888 inset;
}
单边盒子阴影
/*  上部 */
.top{
    box-shadow:0 -2px 0 red;
}
/*  右边 */
.right{
    box-shadow:2px 0 0 green;
}
/*  底部 */
.bottom{
    box-shadow:0 2px 0 blue;
}
/*  左边 */
.left{
    box-shadow:-2px 0 0 tomato;
}
h-shadow必需的。水平阴影,阴影离开盒子的横向距离。允许负值
v-shadow必需的。垂直阴影,阴影离开盒子的纵向距离。允许负值
blur可选。模糊半径
spread可选。阴影的延伸半径,大小
color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表
inset可选。从外层的阴影(开始时)改变阴影内侧阴影

3.word-break 强制换行

p.test {
    word-break:break-all;
}
normal使用浏览器默认的换行规则。
break-all允许在单词内换行。
keep-all保留单词完整性,只能在半角空格或连字符处换行。

4. word-wrap 单词换行

.box{
    /* 网址换行 */
    word-wrap:break-word;
}

image-20200716102257735

字体

@font-face

背景

1. background-clip 背景裁切

image-20200716110118168

-webkit-background-clip:text;
color:transparent;
/* 或者 */
-webkit-text-fill-color:transparent;
2. background-origin背景原点

image-20200716112311969

3. background-size 背景中图像的尺寸

image-20200716112447165

  • length percentage cover会在一定程度上裁剪的
  • contain 不裁剪 ,保持原图宽高比例
圆角

border-radius

如果你在 border-radius 属性中只指定一个值,那么将生成 4 个 圆角。

但是,如果你要在四个角上一一指定,可以使用以下规则:

  • 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。
  • 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角
  • 两个值: 第一个值为左上角与右下角,第二个值为右上角与左下角
  • 一个值: 四个圆角值相同(50%),即正圆

image-20200716144614018

image-20200716145504686

边框图片
1. border-image

image-20200716151944440


颜色特性

image-20200716152641535

hsl(色调,饱和度%,亮度%)

hsla(色调,饱和度%,亮度%,透明度)

亮度和饱和度需要加%

渐变

渐变是背景图

image-20200716160105797

image-20200716160622555

image-20200716160727568

image-20200716161034994

image-20200716161056434

image-20200716161110779

线性渐变
.div:nth-child(1){
    background-image:linear-gradient(yellow,green,blue)
}
  • 从下往上渐变 to top

      background-image:linear-gradient(to top,yellow,green,blue)
    
  • 从左往右right

     background-image:linear-gradient(to right,yellow,green,blue)
    
  • 右上对角渐变to right top

     background-image:linear-gradient(to right top,yellow,green,blue)
    
  • 颜色多给一点

    background-image:linear-gradient(to right top,yellow 80%,green,blue)
    
径向渐变

默认是椭圆

background-image:radial-gradient(circle,yellow 80%,green,blue)

image-20200716161821922

image-20200716161857531

image-20200716161959034

image-20200716162017899

image-20200716162051778

多背景图

background:url(img/1.png) no-repeat left top,url(img/2.png) no-repeat right top,url(img/3.png) no-repeat left bottom,url(img/4.png) no-repeat right bottom

24. 什么是BFC?触发BFC的条件有哪些?

块级格式化上下文

独立的渲染区域,需要一定规则触发

是什么

image-20200714093102886

触发条件

image-20200714093533328

overflow的值

描述
visible默认值。内容不会被修剪,会呈现在元素框之外。
hidden内容会被修剪,并且其余内容是不可见的。
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit规定应该从父元素继承 overflow 属性的值。

特性

image-20200714094122586

25. margin的上下重叠问题怎么解决?

margin的重叠问题

上下两个盒子同时给margiin的时候,会发生重叠,重叠的时候取margin最大值

解决办法
  • 给其中一个子元素添加一个父盒子,添加 overflow:hidden/scroll/auto; display:inline-block;float-left/right;等等 让他俩触发BFC

26. 两栏布局怎么实现?

BFC的区域不与float浮动的盒子重叠,BFC特性实现两栏布局

左列定宽,右列自适应

  • 给左边固定宽 添加浮动,给右边添加overflow:hidden,会实现两栏自适应

  • 给父级设置display:flex,自适应列设置flex:1,均分剩余空间

右列定宽,左列自适应

27. 三栏布局怎么实现?

分情况

两侧定宽,中间自适应

  • 两侧的两列float,中间列给overflow:hidden,但是自适应列的区块和右列的区块,在html中交换顺序,即解析顺序:left center right
  • 两侧的两列float,中间列给margin-left(对应的是左列宽度),margin-right(对应的是右列宽度),但是自适应列的区块和右列的区块,在html中交换顺序,即解析顺序:left center right
  • 两侧的两列给position:absolute,父元素给position:relative,但是自适应列的区块和右列的区块,在html中交换顺序,即解析顺序:left center right
  • 父级设置dsiplay:flex两侧定宽设置宽度,自适应列设置flex:1均分剩余空间

左边两列定宽,右列自适应

28 .transition和animation之间有什么共同点和区别?

image-20200717151041276

29. transform:translateX(100px) rotateZ(45deg)和transform:rotateZ(45deg) translateX(100px)实现的效果是一样的吗?为什么?

transform:translateX(100px) rotateZ(45deg)是同时沿x轴偏移100px,同时也沿z轴旋转45度

transform:rotateZ(45deg) translateX(100px),是有先后顺序的,即先旋转45度之后,再沿x轴偏移100px

30. 什么是渐进增强和优雅降级

  • 渐进增强
    • 先考虑低版本兼容,再慢慢考虑高版本(更推荐)
  • 优雅降级
    • 先考虑高版本,再考虑低版本

image-20200716094353000

image-20200716094414387

31. 移动端布局的方式有哪些

image-20200721084959598

32 .em和rem的区别?

  • 共同点:都是相对单位,相对于别的元素的改变而变化的

  • 区别:em相对于最近父元素的字号大小、rem相对根元素字号大小

33. 响应式设计的特点(responsive设计特点)

img

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要了解得物网站的数据结构和爬取方式,得物网站比较复杂,需要使用Selenium+BeautifulSoup进行爬取。 以下是一个简单的得物爬虫Python代码实现(注:仅供学习参考,请勿用于商业用途): ```python import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在报错的问题 options.add_argument('window-size=1920x3000') # 指定浏览器分辨率 options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 options.add_argument('--headless') # 无界面 driver = webdriver.Chrome(options=options) url = 'https://www.dewu.com/' driver.get(url) # 等待页面加载完成 time.sleep(3) # 模拟鼠标点击,展开商品列表 driver.find_element_by_xpath('//div[text()="全部商品"]').click() # 等待页面加载完成 time.sleep(3) # 获取页面源代码 html = driver.page_source # 解析页面 soup = BeautifulSoup(html, 'html.parser') # 获取商品列表 items = soup.find_all('div', {'class': 'item-card'}) for item in items: # 获取商品标题 title = item.find('div', {'class': 'title'}).text.strip() # 获取商品价格 price = item.find('div', {'class': 'price'}).text.strip() # 获取商品链接 link = item.find('a', {'class': 'item-link'})['href'] print(title, price, link) # 关闭浏览器 driver.quit() ``` 这里的代码仅仅是一个简单的爬虫示例,如果想要更加深入地了解得物网站的数据结构和爬取方式,需要结合具体的需求进行更加详细的分析和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值