示例网址:
https://50projects50days.com/projects/split-landing-page/
http://50projects.tc.cluski.top/50projects50days/split-landing-page/
效果:

思路:
首先分别是左右两栏设置对应的背景图片。然后使用::before伪元素设置遮罩。而遮罩是使用rgba(28, 122, 28, 1)来设置的,所以会有个半透明的效果。
在js中,对两栏的父容器增加了mouseenter和mouseleave的事件监听,触发事件之后,增加/减少对应半栏的宽度。
px、rem、em
区别
px是固定的像素,一旦设置了就无法因为适应页面大小而改变。em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局。em是相对于其父元素来设置字体大小的,一般都是以<body>的font-size为基准。这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值。
总之em相对于父元素,rem相对于根元素。
em示例
-
子元素字体大小的
em是相对于父元素字体大小 -
元素的
width/height/padding/margin用em的话是相对于该元素的font-size -
任何浏览器默认字体大小都是16px,所有未经调整的浏览器都符合
1em=16px
<div>
父元素div
<p>
子元素p
<span>孙元素span</span>
</p>
</div>
div {
font-size: 40px;
width: 7.5em; /* 300px */
height: 7.5em;
border: solid 2px black;
}
p {
font-size: 0.5em; /* 20px */
width: 7.5em; /* 150px */
height: 7.5em;
border: solid 2px blue;
color: blue;
}
span {
font-size: 0.5em;
width: 7em;
height: 6em;
border: solid 1px red;
display: block;
color: red;
}
rem示例
rem是全部的长度都相对于根元素(<html>元素)。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem。
<div>
父元素div
<p>
子元素p
<span>孙元素span</span>
</p>
</div>
html {
font-size: 10px;
}
div {
font-size: 4rem; /* 40px */
width: 20rem; /* 200px */
height: 20rem;
border: solid 2px black;
}
p {
font-size: 2rem; /* 20px */
width: 10rem;
height: 10rem;
border: solid 1px blue;
color: blue;
}
span {
font-size: 1.5rem;
width: 7rem;
height: 6rem;
border: solid 2px red;
display: block;
color: red;
}
white-space
white-space 属性是用来设置如何处理元素中的空白。
| 换行符 | 空格和制表符 | 文字换行 | 行尾空格 | |
|---|---|---|---|---|
normal |
合并 | 合并 | 换行 | 删除 |
nowrap |
合并 | 合并 | 不换行 | 删除 |
pre |
保留 | 保留 | 不换行 | 保留 |
pre-wrap |
保留 | 保留 | 换行 | 挂起 |
pre-line |
保留 | 合并 | 换行 | 删除 |
break-spaces |
保留 | 保留 | 换行 | 换行 |
评论区