0
点赞
收藏
分享

微信扫一扫

前端简答题-HTML/CSS

干自闭 2022-04-16 阅读 31
javascript

HTML/CSS
1、如何使用css绘制一个三角形?
​ 方法一:使用border绘制三角形(可以是等腰也可以是直角)
不给盒子元素设置宽高,给4个方向分别设置边框,但是颜色都为透明(把不要的部分颜色都设置为transparent), 设置其中一个方向边框色,例如border-bottom,那么将绘制一个三角朝上的三角形。

#traingle { width: 0; height: 0; border: 100px solid transparent; border-bottom: 100px solid #ccc; }

在这里插入图片描述
margin和padding是不能设置颜色的,margin没有背景颜色,是完全透明的。margin可以单独改变元素的上,下,左,右边距。也可以一次改变所有的属性,而padding是跟随背景颜色(background-color可包括内容、内边距和边框区域)。
方法二:使用线性渐变linear-gradient(直角三角形)
实现一个45度的渐变,然后让它的颜色从渐变色变为两种固定颜色,最后再让其中一种颜色透明即可。

#traingle { width: 100px; height: 100px; background:linear-gradient(45deg,black,black 50%,red 50%,red 100%) }

方法三:使用transform:rotate和overflow:hidden
选中一个旋转中心,进行旋转,之后配合overflow:hidden截取想要的部分
2、简述css3选择器的优先级机制?(CSS权重及其引入方式 )
css 选择规则的权值不同时, 权值高的优先;css 选择规则的权值相同时, 后定义的规则优先; css 属性后面加 !important 时, 无条件绝对优先;
(1)权重
在这里插入图片描述
我们把特殊性分为几个等级,每个等级代表一类选择器,每个等级的值为其所代表的选择器的个数乘以这一等级的权值,最后把所有等级的值相加得出选择器的特殊值。
(2)引入方式
行间样式(直接为标签添加style属性)

 <div style="background: red;">内联样式</div>

内部样式表(内嵌样式) 在head标签写style标签

<html>
    <head>
        <title>内部样式表</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            body{
                font-size: 12px;
            }
        </style>
    </head>
    <body></body>
</html>

外部css文件 使用link标签引入(在head标签中),引入地址写乳href属性中。

<link rel="stylesheet" type="text/css" href="..."/>

导入样式

<style type = test/css>
@import url("外部样式表的名称");
</style>

3、请写出1rem、1em、1vh、1px、代表的含义
1rem :继承根元素的字体大小
1em : 继承父级元素的字体大小
1vh : 视窗的(vw)宽度和 (vh)高度,相当于 屏幕宽度和高度的 1%
1px :相对长度单位。像素px是相对于显示器屏幕分辨率而言的
4、标签全部作用 参考1参考2
设置herf属性可作为超链接、锚点(通过返回顶部能够实现一个常见的返回顶部的功能。)、打电话或者发邮件和协议限定符
5、未知宽高元素水平垂直居中(方案及比较)–内容水平和垂直居中?
方法1:通过定位和transform属性来实现
思路:子元素绝对定位,距离顶部 50%,左边50%,然后使用css3 transform:translate(-50%; -50%)
优点:高大上,可以在webkit内核的浏览器中使用
缺点:不支持IE9以下不支持transform属性

<style>
    .parent{
        width:100%;
        height:400px;
        background:#666;
        position:relative;
    }
    .children{
        position:absolute;
        top:50%;
        left:50%;
        background:red;
        transform:translate(-50%,-50%);
    }
</style>

方法2:使用弹性盒,通过利用flex布局
思路:使用css3 flex布局
优点:简单 快捷
缺点:兼容不好吧,详情见:http://caniuse.com/#search=flex

<style>
    .parent{
        width:100%;
        height:400px;
        background:#666;
        display:flex;
        align-items:center;
        justify-content:center;
    }
    .children{
        background:red;
    }
</style>

方法3:通过table属性实现,主要原理是将父元素设置为table,子元素设置为table-cell,利用table属性让子元素垂直水平居中
准备一个已知宽高的父元素,子元素嵌套其中,父元素设置为table,绝对定位,子元素设置为table-cell,然后设置子元素 的vertical-align为middle就可以使其垂直居中,text-align为center使其水平居中。
优点:父元素(parent)可以动态的改变高度(table元素的特性)
缺点:IE8以下不支持

    <style>
        .parent{
            display:table;
            width:100%;
            height:400px;
            background:#666;
        }
        .children{
            display:table-cell;
            vertical-align:middle;
            text-align:center;
            background:red;
        }
    </style>

原文:添加链接描述
各方案比较:方法三使用table对于图片不管用,
方法4:添加链接描述
思路:使用一个空标签span设置他的vertical-align基准线为中间,并且让他为inline-block,宽度为0
缺点:多了一个没用的空标签,display:inline-blockIE 6 7是不支持的(添加上:_zoom1;*display:inline)。
当然也可以使用伪元素来代替span标签,不过IE支持也不好,但这是后话了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>未知宽高元素水平垂直居中</title>
</head>
<style>
.parent2{
    height:300px;
    width: 300px;
    text-align: center;
    background: #FD0C70;
}
.parent2 span{
    display: inline-block;
    width: 0;
    height: 100%;
    vertical-align: middle;
    zoom: 1;/*BFC*/
    *display: inline;
}
.parent2 .child{
    display: inline-block;
    color: #fff;
    zoom: 1;/*BFC*/
    *display: inline;
}

</style>
<body>
    <div class="parent2">
        <span></span>
        <div class="child">hello world-2</div>
    </div>
</body>
</html>

写出几个你熟悉的Git命令?

举报

相关推荐

0 条评论