移动端布局思路与三种视口的关系
三种视口
概念理解:
布局视图: 980px width
视觉视图: 375px device-width
修改布局视图: width = device-width, 布局视图等于视觉视图
initial-scale=1.0, 初始化时,布局视图/视觉视图=1: 理想视图
页面设置
1. 布局视图 = 视觉视图: width = device-width
2. 理想视图 = 视觉视图: initial-scale=1.0
说明:
px不能在移动端布局直接使用,因为px是固定值,移动端的显示效果和设置尺寸有关
主流解决方案使用: rem + vw
默认1rem = 16px
为了计算方便和布局, 通常将1rem = 100px
基础代码:
html{
/* font-size: 100px; */
font-size: calc(100vw / 3.75);
/* 100px = 100px */
}
body {
/* 在body中将font-size还原成浏览器默认值 12px , 否则后面的em就全错了 */
/* font-size: 12px; */
font-size: 0.12rem;
}
/* 限制一下手机上最小和最大的字号 */
@media screen and (max-width: 320px) {
html{
font-size: 85px;
}
}
@media screen and (min-width: 640px) {
html{
font-size: 170px;
}
}
仿淘宝首页基本布局
新加代码
#头部,底部,基本按照老师的原样敲了一遍,里面有些自己的改动,去掉了内容的绝对定制,改成了一直用padding顶下来显示,下面是我自己新加的产品列表排版
<!-- 产品列表 -->
<div class="plist">
<div class="plist_t"><img src="images/xihuan.png" /></div>
<div class="plist_c">
<div>
<a href="#">
<img src="images/p_list.jpg" />
<p>吃牛排的刀叉三件套西餐套装餐具刀勺全套两家用盘西餐具盘子儿童</p>
<div><span>¥12.9</span><span>2000+人已购买</span></div>
</a>
</div>
<div>
<a href="#">
<img src="images/p_list.jpg" />
<p>吃牛排的刀叉三件套西餐套装餐具刀勺全套两家用盘西餐具盘子儿童</p>
<div><span>¥12.9</span><span>2000+人已购买</span></div>
</a>
</div>
<div>
<a href="#">
<img src="images/p_list.jpg" />
<p>吃牛排的刀叉三件套西餐套装餐具刀勺全套两家用盘西餐具盘子儿童</p>
<div><span>¥12.9</span><span>2000+人已购买</span></div>
</a>
</div>
<div>
<a href="#">
<img src="images/p_list.jpg" />
<p>吃牛排的刀叉三件套西餐套装餐具刀勺全套两家用盘西餐具盘子儿童</p>
<div><span>¥12.9</span><span>2000+人已购买</span></div>
</a>
</div>
</div>
</div>
css样式
main {
padding-bottom: 0.5rem;
}
.plist {
padding: 0.2rem;
}
.plist_t {
text-align: center;
margin-bottom: 0.25rem;
}
.plist_t img {
width: 50%;
height: auto;
}
.plist_c {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0.1rem;
grid-auto-rows: auto;
}
.plist_c > div {
border-radius: 0.05rem;
background-color: #fff;
}
.plist_c img {
width: 100%;
height: 100%;
border-top-left-radius: 0.05rem;
border-top-right-radius: 0.05rem;
}
.plist_c > div > a > p {
margin: 0.06rem 0.1rem;
height: 0.32rem;
line-height: 0.16rem;
overflow: hidden;
}
.plist_c > div > a > div {
padding: 0 0.1rem 0.1rem;
}
.plist_c > div > a > div span:first-child {
color: red;
margin-right: 0.1rem;
}
效果图