移动端随机语录页面适配问题求助:背景与元素缩放异常
问题修复方案
一、背景图全屏适配修复
移动端背景图无法覆盖全屏,是因为给body设置了固定宽高,同时background-size用了固定像素值,修改如下:
/* 基础body样式优化(全端生效) */ body { font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; margin: 0; padding: 0; background-image: url(''); /* look app.js */ background-size: cover; background-position: center center; /* 改为居中,确保全端显示合理 */ background-repeat: no-repeat; min-height: 100vh; /* 让body默认占满视口高度 */ } /* 移动端媒体查询修改 */ @media only screen and (max-width: 768px){ body{ font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; margin: 0; padding: 0; width: auto; /* 移除固定宽度 */ height: 100vh; /* 强制占满视口高度 */ background-size: cover; /* 恢复cover自适应屏幕 */ background-position: center center; } }
二、页面元素移动端适配修复
所有容器使用固定700px宽度导致移动端溢出,需改为弹性宽度适配:
1. 修复#wrapper样式
#wrapper{ position: relative; width: 90%; /* 用百分比适配屏幕 */ max-width: 700px; /* 保留桌面端最大宽度限制 */ margin: 0 auto; min-height: 300px; /* 移除min-width:700px和max-height,避免限制移动端显示 */ }
2. 修复.container样式
.container { position: relative; width: 100%; /* 继承wrapper宽度 */ max-width: 700px; min-height: 300px; /* 用min-height代替固定height,内容过多时自动撑开 */ background-color: rgb(0, 48, 73, .80) ; margin: 0 auto; margin-top: 80px; /* 移动端减小上边距,避免内容偏下 */ border-radius: 50px; border-style: solid; border-color: rgb(64, 159, 223, .1); border-width: 0.2em; text-align: center; padding: 20px 15px 1px; /* 左右加内边距,避免内容贴屏幕边缘 */ color: #cbc0d3; }
3. 修复.title和.author样式
.title{ width: 100%; /* 改为100%适配容器 */ } .author{ margin-left: 0; /* 移除固定左边距 */ margin-top: 30px; width: 100%; font-style: italic; text-align: right; /* 用text-align代替margin实现居右 */ padding-right: 15px; /* 加右边内边距,避免贴边 */ }
4. 移动端字体与间距优化(可选)
在媒体查询中添加,提升移动端阅读体验:
@media only screen and (max-width: 768px){ .title h1 { font-size: 1.8rem; padding-top: 10px; } .title p { font-size: 1rem; margin-bottom: 20px; } .random-quote h2 { font-size: 1.2rem; line-height: 1.5; } .author { font-size: 0.9rem; } }
三、JavaScript请求逻辑优化
原代码中两个API请求可能存在执行顺序问题,导致渲染时数据不全,修改为Promise.all确保数据全部获取后再渲染:
const containerElement = document.querySelector(".container") const titleElement = document.querySelector(".title") const quoteElement = document.querySelector(".random-quote") const authorElement = document.querySelector(".author") const bodyElement= document.querySelector("body") const randomQuote = {} const randomImage = {} // 用Promise.all等待两个请求完成后再渲染 Promise.all([getRandomQuote(), getRandomImage()]).then(() => { displayRandomQuote(); }) // 修改请求函数,返回Promise function getRandomImage(){ let apiImg = `https://random.imagecdn.app/v1/image?width=1920&height=1080&format=json` return fetch(apiImg) .then(response => response.json()) .then(data => { randomImage.content = data.url }) } function getRandomQuote(){ let api = 'https://api.quotable.io/random' return fetch(api) .then(response => response.json()) .then(data => { randomQuote.quote = data.content randomQuote.author = data.author }) } function displayRandomQuote(){ quoteElement.innerHTML = `${randomQuote.quote}` authorElement.innerHTML = `By: <span>${randomQuote.author}</span>` document.body.style.backgroundImage = "url('" + randomImage.content + "')" }
修改完成后,背景图会在移动端全屏覆盖,所有元素将自适应手机屏幕宽度,内容不会溢出屏幕。
内容的提问来源于stack exchange,提问作者Νίκος Μπάρκας
相关产品推荐
相关产品推荐

