很长一段时间,当我不得不创建一个包含许多不同页面的网站(并且每个页面都有一个具有不同背景图像的英雄部分)时,我曾经这样做过:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in group statement is ambiguous
以下css:
<div class="hero" style="background-image: url(my-dynamic-img.jpg)"></div>
图像将为每个页面动态加载。在CMS中,例如,客户端可以自己更改图像,而无需更改css
但是现在,我意识到它并不好,因为你最终会在每台设备(手机,平板电脑,台式机......)上加载相同的图像。
所以我想对你做到这一点的最佳方式有你的意见:为同一背景设置3个不同的图像(hero-mobile.jpg,hero-tablet.jpg和hero-desktop.jpg)并定位自动好。 3个图像的声明必须在HTML中,而不是在css中(因此客户端可以随时更改它)
答案 0 :(得分:4)
您是否发现了srcset
属性? srcset
的作用是允许您在<img>
代码中添加多个图片并为其设置某些条件。根据满足的条件,将显示相应的图像。一个例子的时间
如果您想要查看一半用户视口宽度的图像,您可以使用
<img src="images/space-needle.jpg" sizes="50vw"
srcset="images/space-needle.jpg 200w, images/space-needle-2x.jpg 400w,
images/space-needle-hd.jpg 600w">
这样做的目的是找出用户视口宽度有多大,比如500px宽,这样你的图像images/space-needle.jpg 200w
就会为用户加载。
在此示例中,我们指定图像需要占据屏幕宽度sizes="50vw"
的一半。在500px宽屏幕上显示600px或400px宽的图像是不可能的,并且只能在视口的一半处显示它,因此它选择200w
选项。
有很多方法可以指定图像应加载的条件,设备像素比,屏幕大小,浏览器大小等等。
教育链接:
https://www.sitepoint.com/how-to-build-responsive-images-with-srcset/
https://www.udacity.com/course/responsive-images--ud882
答案 1 :(得分:0)
有多种方法可以做到这一点,但在您的情况下,由于您希望客户端修改HTML,您应该使用css中的@media
:
E.g
然后在CSS中,您应该为每个
进行媒体查询@media (min-width: 430px) {
.tablet {
display:block !important;
}
.mobile {
display: none !important;
}
.desktop{
display: none !important;
}
}
@media (max-width: 600px) {
.mobile {
display:block !important;
}
.tablet {
display: none !important;
}
.desktop{
display: none !important;
}
}
@media (min-width: 900px) {
.tablet {
display: none !important;
}
.mobile {
display: none !important;
}
.desktop{
display:block !important;
}
}
答案 2 :(得分:0)
我们将使用媒体屏幕在移动设备,笔记本电脑和磁盘顶屏幕中显示图像
.hero img{
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
width:100%;
}
@media screen and (max-width: 500px){
.hero img{
display: block !important;
}
}
@media screen and (min-width: 501px) and (max-width:880px){
.hero1 img{
display: block !important;
}
}
@media screen and (min-width: 881px){
.hero2 img{
display: block !important;
}
}
&#13;
<div class="hero" >
<img src="https://cdn.pixabay.com/photo/2013/06/09/18/50/tulip-123795_960_720.jpg" alt="" style="display: none">
</div>
<div class="hero1">
<img src="https://cdn.pixabay.com/photo/2012/03/03/23/13/tulips-21598_960_720.jpg" alt="" style="display: none">
</div>
<div class="hero2">
<img src="https://cdn.pixabay.com/photo/2016/10/07/14/01/tangerines-1721620_960_720.jpg" alt="" style="display: none">
</div>
&#13;
答案 3 :(得分:0)
试试
img {
max-width: 100%;
height auto;
}