整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

css背景图片高度自适应解决方案

切图公司的web前端项目外包中,有的情况需要用背景图片来替代图片,使用背景图片替换img标签时,img标签可以根据屏幕宽度自适应高度,而背景图片却无法适应高度,使用css的内边距(padding)可以解决高度问题,因为垂直方向的padding值,根据宽度的大小来计算的,办法如下;

<style>

.wrap{

width: 100%;

}

.banner{

width: 100%;

max-width: 490px; /**图片的宽度不大于图片实际像素**/

height: 0;

max-height: 329px;

padding-bottom: 67.14%; /**根据图片高宽比计算*/

margin: 0 auto;

background: url("images/test.jpg") no-repeat center;

background-size: cover;

}

@media only screen and (min-width: 490px) {

/**屏幕大于490时,将背景框高度设置为图片高度的实际像素**/

.banner{

height: 329px;

padding-bottom: 0;

}

}

</style>

<div class="wrap">

<!--role属性 aria-label属性增强html的可读性,更语义化-->

<div role="img" aria-label="banner img" class="banner"></div>

</div>

来源:切图网 qietu.com

口单位(Viewport units)

什么是视口?

在PC端,视口指的是在PC端,指的是浏览器的可视区域;

而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Viewport(视觉视口),Ideal Viewport(理想视口)。

视口单位中的“视口”,PC端指的是浏览器的可视区域;移动端指的就是Viewport中的Layout Viewport。

根据CSS3规范,视口单位主要包括以下4个:

1.vw:1vw等于视口宽度的1%。

2.vh:1vh等于视口高度的1%。

3.vmin:选取vw和vh中最小的那个。

4.vmax:选取vw和vh中最大的那个。

vh and vw:相对于视口的高度和宽度,而不是父元素的(CSS百分比是相对于包含它的最近的父元素的高度和宽度)。1vh 等于1/100的视口高度,1vw 等于1/100的视口宽度。

比如:浏览器高度950px,宽度为1920px, 1 vh = 950px/100 = 9.5 px,1vw = 1920px/100 =19.2 px。

vmax相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax。

vmin相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin。


vh/vw与%区别


请看下面简单的栗子:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>VW&VH</title>
</head>
<style>
    * {
        padding: 0;
        margin: 0
    }

    .left {
        float: left;
        width: 50vw;
        height: 20vh;
        background-color: blue;
        text-align: center;
        line-height: 20vh;
        font-size: 3rem
    }

    .right {
        float: right;
        width: 50vw;
        height: 20vh;
        background-color: green;
        text-align: center;
        line-height: 20vh;
        font-size: 3rem
    }
</style>

<body>
    <div class="left">left</div>
    <div class="right">right</div>
</body>

</html>


兼容性问题(在移动端 iOS 8 以上以及 Android 4.4 以上获得支持,并且在微信 x5 内核中也得到完美的全面支持)

高自适应

网页布局中经常要定义元素的宽和高。但很多时候我们希望元素的大小能够根据窗口或子元素

自动调整,这就是pc自适应。

自适应的优点:

元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以适应在不同设备、不同窗口和不同分辨率下显示。

宽度自适应

元素宽度设置为100%。(块元素宽度默认为100%)

或者不设置宽度(width);(宽度是父元素的宽度)

高度自适应

1)自适应元素高度:height:auto;或者不设置;(是子元素撑开父元素的高度)

2)元素高度自适应窗口高度

设置方法:html,body{height:100%;}

注:如果设置子元素的高度跟随父元素的高度变化而变化,那么父元素必须有高度。

最小高度的自适应

min-height属性:最小高度;(IE6浏览器不识别该属性) ​


hack1:min-height:value;_height:value; ​


hack2:min-height:value; height:auto!important;height:value;

浮动元素父元素高度自适应(高度塌陷)

当子元素有浮动并且父元素没有高度的情况下父元素会出现高度塌陷

高度塌陷的解决方法

hack1:给父元素添加声明overflow:hidden;(触发一个BFC)


hack2: 在浮动元素下方添加空div,并给该元素添加 声明:div{clear:both; height:0; overflow:hidden;}


hack3:万能清除浮动法

选择符:after {
	content: "";
	clear: both;
	display: block;
	height: 0;
	overflow: hidden;
	visibility: hidden;
}

visibility:hidden/隐藏

visibility:hidden;和display:none;的区别:

visibility:hidden;属性会使对象不可见,但该对象在网页所占的空间没有改变,等于留出了一块空白区域,而 display:none属性会使这个对象彻底消失不显示,也不再占用位置。

对象选择符

1)、::after : 与content属性一起使用,定义在对象后的内容。

语法:选择符::after{content:”文字”;}

选择符::after{content:url(图片路径);}

如:div::after{content:url(logo.jpg);}

div::after{content:"文本内容";}

2)、::before: 与content属性一起使用,定义在对象前 的内容。

div::before{content:"在其前放内容";}

3)、::first-letter 定义对象内第一个字符的样式。

说明:

*(该伪元素只能用于块级元素)

4)、::first-line:定义对象内第一行的样式。

*(该伪元素只能用于块级元素。)

全屏页面



本文转自知乎号:千锋HTML5学院