热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试官:一道题看透你会不会css

今天总结了一下css的考点,发现一个有趣的面试题,可以衍生到很多点,记录一下分享给大家问题:什么是标签语义化扩展&#x

今天总结了一下css的考点,发现一个有趣的面试题,可以衍生到很多点,记录一下分享给大家

问题:

什么是标签语义化

扩展:

1、 都有哪些标签?
2、块级标签和行内标签的区别?
3、如何转化?
4、display除了这个几个值还有哪些?
5、既然提到了display:none来说一说吧?
6、让元素隐藏,有几种办法?
7、display:none和visibility:hidden的区别?
8、opacity的兼容处理
9、filter是什么,还是做什么事情?
10、display:flex
/11、 除了这种居中方式还有哪些?
12、响应式布局可以怎么做?
/13、 都有哪些盒子模型?
14、两种标准盒子模型怎么转化?

下面我们就一个个来看问题吧:

什么是标签语义化:


元素本身包含了一些标签内所包含的内容类型的一些信息,浏览器或开发者能从标签知道其语义。

为什么要使用标签语义化(标签语义化的优点):

能够优化代码结构
有利于SEO
提升用户体验
便于团队开发和维护
方便其他设备解析


1、都有哪些元素?

在这里插入图片描述

在这里插入图片描述

2、块级标签和行内标签的区别?


块级元素独占一行,可以设置宽高,水平方向margin和padding设置有效,垂直方向无效,可以包含行内元素和块级元素


行内元素不独占一行,宽高设置无效,margin上下无效,padding上下无效,行内元素无法嵌套其他行内元素或者块元素

参考链接:
HTML行内元素和块级元素(面试必考题)

3、如何转化?

块级转行级:display:inline
行级转块级:display:block
行内块元素:inline-block

4、display除了这个几个值还有哪些?

display:none
display:blcok
display:inline
display:inline-block
display:inherit(从父元素处集成display属性的值)
display:table (表格)
display:flex(flex布局)
display:list-item(列表)
这里看到一篇文章写了display所有的属性值,一共有32中:
css-display所有属性值简单介绍

5、既然提到了display:none来说一说吧?

1、display:none和visible:hidden都能把网页上某个元素隐藏起来。

2、但两者有区别:

●display:none —不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失,通俗来说就是看不见也摸不到。

●visible:hidden— 使对象在网页上不可见,但该对象在网页上所占的空间没有改变,通俗来说就是看不见但摸得到。

1、visibility: hidden----将元素隐藏,但是在网页中该占的位置还是占着。

2、display: none----将元素的显示设为无,即在网页中不占任何的位置。

3、例如有三个table,将中间的一个table hidden掉,你会发现在那个被hidden的table看不见了,但是,中间会留有很大的一空白,而这个空白就是这个table没有被隐藏时所占的位置。

4、而none的作用更像是把元素从网页中“去除”(当然不是真的去除,只是效果是如此)

5、例如有三个table,将中间的一个table none掉,你会发现在剩下的两个table中间不会有任何的空白。就好像中间的那个table从来不存在过一样。

6、让元素隐藏,有几种办法?


1、display:none
2、visibility:hidden
3、opacity=0 透明度设置为0
4、position:absolute脱离文档流之后设置一个很大的负值
5、transform:scale(0),把一个元素色红孩子成为无限小,位置还在,看不见
6.HTML5 hidden attribute ,与display:none相同
7、height:0,overflow:hidden ,把元素在垂直方向上收缩为0,元素消失
8.filter:blur(0),把一个元素的模糊度设置为0,看不见了


7、display:none和visibility:hidden的区别?

1.display:none是彻底消失,不在文档流中占位,浏览器也不会解析该元素;visibility:hidden是视觉上消失了,可以理解为透明度为0的效果,在文档流中占位,浏览器会解析该元素;

2.使用visibility:hidden比display:none性能上要好,display:none切换显示时visibility,页面产生回流(当页面中的一部分元素需要改变规模尺寸、布局、显示隐藏等,页面重新构建,此时就是回流。所有页面第一次加载时需要产生一次回流),而visibility切换是否显示时则不会引起回流。

8、opacity的兼容处理


使用css解决
filter:alpha(opacity=70); /IE/
-moz-opacity::0.7; /老版Mozilla/
-khtml-opacity:0.7; /老版Safari/
opacity:0.7; /支持opacity的浏览器/


使用js解决
.object.filter=“alpha(opacity=” + opacity + “)”; /IE/
.object.MozOpacity =(opacity / 100); /老版Mozilla/
object.KhtmlOpacity= (opacity / 100); /老版Safari/
object.opacity=(opacity / 100); /支持opacity的浏览器/


9、filter是什么,还是做什么事情?


Filter称之为过滤器,是servlet中最实用的技术,web开发人员通过Filter技术,对web服务器所管理的资源(jsp,servlet,静态图片或者静态html文件)进行拦截,从而实现一些特殊的功能。简单说就是过滤从服务端向服务器发送请求的。

实现功能:

 敏感词汇的检测
 控制用户的访问权限
 统计web应用的日志处理功能

详细文章:
Filter概述

10、display:flex

flex布局就是弹性布局,用来为盒子提供最大的灵活性,基于传统的盒子模型,依赖display属性+position属性+float属性,用起来比较方便
学习它主要了解容器属性和元素属性就ok:
容器属性:

1.flex-direction设置flex容器主轴的方向
row:默认,水平,从左到右(123)
row-reverse:默认方向的首尾互换,水平,从右到左(321)
column:垂直,从上到下
column-reverse:垂直,从下到上


2.flex-wrap控制flex容器是单线还是多线,以及新线的堆叠方向
nowrap:单行
wrap:多行
wrap-reverse:新线上前排列
3.flex-flow:flex-direction flex-wrap;
复合写法


4.justify-content项目在主轴上的对齐方式
flex-start:(默认)main-start齐平(123 )
flex-end:main-end齐平( 123)
center:居中( 123 )
space-between:两端对齐,每两个flex元素之间的空隙相等(1 2 3)
space-around:每个项目左右两侧的空隙相等( 1 2 3 )1和2之间的空隙是两倍的1和main-start之间的空隙,因为1和2,2和1的空隙是叠加的,算两份


5.align-items项目在交叉轴上的对齐方式(单行)
flex-start:cross-start齐平
flex-end:cross-end齐平
center:居中对齐


6.align-content多线的对齐方式,单线不起作用
flex-start:打包cross-start齐平
flex-end:打包cross-end齐平
center:打包居中
stretch:未设置高度时占满整个交叉轴
space-between:cross两端对齐
space-around:两侧空隙相等

元素属性:

1.flex-basis:length;定义该元素的main-size(主轴方向)
由于是元素属性,应该设置在单个元素里,如上述案例用的first-child,nth-child,last-child;
如果主轴方向是水平的,flex-basis默认继承width,如果width和flex-basis都设置了,以flex-basis为准;
如果主轴方向是垂直的,flex-basis默认继承height的值,如果两者都设置了,以flex-basis为准


2.flex-grow:number;拉伸比例,默认值为0,不拉伸(主轴方向)
如果子div元素没有将父div充满,设置此项,将剩余的空间按比例分配给子div(主轴方向)
如:父宽600px,子宽100px,如果三个子div比例是1:1:1,原剩余300px,就将这300按1:1:1分给子div,每个子分到100px,现在宽度就是100(原宽)+100(加宽) = 200(现宽)
如果父宽400px,子宽100px,三子比例1:2:1,原剩余100px,分给1子25px,2子50px,3子25px,1的现宽是100+25=125px,2是100+50=150px,3是100+25=125px


3.flex-shrink:number;压缩比例,默认值为1
此属性生效的前提是nowrap
按比例计算压缩的px数:
在这里插入图片描述


4.flex:flex-grow flex-shrink flex-basis,默认值:0 1 auto
复合属性


5.align-self:单个项目在cross轴上的对齐方式
flex-start:cross-startqiping
flex-end:cross-end齐平
center:居中
baseline:第一行文字
stretch:未设置高度时,该元素高度为flex容器高度
与容器属性中的align-items对应,此处是对单个元素的cross轴进行设置,align-items是对一行的cross轴设置
在第二个子div设置align-self: center;,1子和2子不做改变

参考链接:
前端提高篇(四十二)CSS进阶9:Flex弹性盒子(二)容器属性和元素属性

11、 除了这种居中方式还有哪些?

垂直居中的办法:

1、margin:auto
/2、margin负值,设为宽度和高度的一半
3、display:table-cell(未脱离文档流)
/4、display:flex
align-items:center
justfy-content:center


12、响应式布局可以怎么做?

响应式布局就是一个网站能够兼容多个终端,
实现方法主要有三种:

  1. CSS3-Media Query(最简单的方式,但是无法满足很多需求)
    2. 借助原生Javascript(成本高,不推荐使用)
    3. 第三方开源框架(比如bootstrap,可以很好的支持浏览器的响应式布局)

前面两种已经基本上用不到了,
参考链接:
响应式布局实现方法

13、 都有哪些盒子模型?

盒子简单来说就是用来装页面上的元素的矩形区域,CSS盒模型包括IE盒模型和标准的W3C盒模型

box-sizing有三个值:他们的主要区别是width包含的范围不一样

border-box:IE盒模型{怪异模式} width包含border和padding
padding-box:width包含padding+context+width
content-box:width包含content

要理解两种盒子的不同,本质上就是width包含的范围不同
标准盒模型:
在这里插入图片描述
IE盒模型:
在这里插入图片描述
总结一下:

1、标准盒模型和IE盒模型区别在于width和height包含的内容不一样:
标准盒模型width=content; height=content
IE盒模型width=content+左右padding+左右border ;height也一样


2、IE盒模型盒子的宽度等于width
标准盒子模型的宽度等于width+左右padding+左右border
注:这里说的宽度不是上面的width ,是盒子整体的宽度。


14、两种标准盒子模型怎么转化?

IE盒模型转化成标准盒模型:
设置box-sizing:conten-box

标准盒模型转化成为IE盒模型:
box-sizing:border-box

根据实际情况可做出改变

整理不易,点个赞在走吧


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
author-avatar
爱智孝的蛋清汤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有