มีคุณสมบัติ CSS3 สำหรับเรื่องนี้คือbackground-size
( ตรวจสอบความเข้ากันได้ ) ขณะที่หนึ่งสามารถตั้งค่าความยาวก็มักจะใช้ที่มีค่าพิเศษและcontain
cover
ในกรณีเฉพาะของคุณคุณควรใช้cover
:
body {
background-image: url(images/background.svg);
background-size: cover; /* <------ */
background-repeat: no-repeat;
background-position: center center; /* optional, center the image */
}
การผลิตไข่สำหรับcontain
และcover
ขออภัยสำหรับปุนที่ไม่ดี แต่ฉันจะใช้รูปประจำวันของ Biswarup Gangulyเพื่อการสาธิต ให้บอกว่านี่คือหน้าจอของคุณและพื้นที่สีเทาอยู่นอกหน้าจอที่มองเห็นได้ สำหรับการสาธิตฉันจะใช้อัตราส่วน 16x9
เราต้องการใช้รูปภาพดังกล่าวของวันนี้เป็นพื้นหลัง อย่างไรก็ตามเราตัดภาพเป็น 4x3 ด้วยเหตุผลบางอย่าง เราสามารถตั้งค่าbackground-size
คุณสมบัติการความยาวคงที่บาง แต่เราจะเน้นและcontain
cover
โปรดทราบว่าฉันคิดว่าเราไม่ได้ทำให้ความกว้างและ / หรือความสูงของbody
มันสั้นลง
contain
contain
ปรับขนาดภาพในขณะที่รักษาอัตราส่วนที่แท้จริง (ถ้ามี) ให้มีขนาดใหญ่ที่สุดซึ่งทั้งความกว้างและความสูงสามารถปรับให้พอดีภายในพื้นที่การจัดตำแหน่งพื้นหลัง
สิ่งนี้ทำให้แน่ใจได้ว่าภาพพื้นหลังจะอยู่ในพื้นที่การวางตำแหน่งพื้นหลังเสมออย่างไรก็ตามอาจมีพื้นที่ว่างที่เต็มไปด้วยของคุณbackground-color
ในกรณีนี้:
cover
cover
ปรับขนาดภาพในขณะที่รักษาอัตราส่วนที่แท้จริง (ถ้ามี) เป็นขนาดที่เล็กที่สุดซึ่งทั้งความกว้างและความสูงสามารถครอบคลุมพื้นที่การวางตำแหน่งพื้นหลังได้อย่างสมบูรณ์
ทำให้แน่ใจว่าภาพพื้นหลังครอบคลุมทุกอย่าง จะไม่สามารถมองเห็นได้ background-color
อย่างไรก็ตามขึ้นอยู่กับอัตราส่วนของหน้าจอส่วนใหญ่ของภาพของคุณอาจถูกตัดออก:
การสาธิตด้วยรหัสจริง
div > div {
background-image: url(http://i.stack.imgur.com/r5CAq.jpg);
background-repeat: no-repeat;
background-position: center center;
background-color: #ccc;
border: 1px solid;
width: 20em;
height: 10em;
}
div.contain {
background-size: contain;
}
div.cover {
background-size: cover;
}
/********************************************
Additional styles for the explanation boxes
*********************************************/
div > div {
margin: 0 1ex 1ex 0;
float: left;
}
div + div {
clear: both;
border-top: 1px dashed silver;
padding-top:1ex;
}
div > div::after {
background-color: #000;
color: #fefefe;
margin: 1ex;
padding: 1ex;
opacity: 0.8;
display: block;
width: 10ex;
font-size: 0.7em;
content: attr(class);
}
<div>
<div class="contain"></div>
<p>Note the grey background. The image does not cover the whole region, but it's fully <em>contained</em>.
</p>
</div>
<div>
<div class="cover"></div>
<p>Note the ducks/geese at the bottom of the image. Most of the water is cut, as well as a part of the sky. You don't see the complete image anymore, but neither do you see any background color; the image <em>covers</em> all of the <code><div></code>.</p>
</div>
html, body { height: 100%; }
ช่วยเหลือ? นอกจากนี้ไอ