模仿 css 背景封面 img 属性 in html
Mimic the css background cover img property in html
感谢大家的回复。但是,我还没有找到我的问题的任何好的答案。所以让我更清楚。
目的
由于我在进行 SEO,因此我需要将图像作为 html 元素并模仿所有 css 属性。
我目前拥有的
我在 css 中添加了图像以便 expand/stretch 并始终将它们居中 div。
.page-electricite-generale .one {
background: url('assets/images/elec/XXXX.jpg') 50% 50% no-repeat;
background-size: cover;
}
可以看到,图片的中心始终居中,div里面没有任何crop/distortion。
我需要的
我想将图像集成为 html 元素并模仿以前的 jsfidle。
Here is the jsfidle with an html image
谢谢
尝试
elem.prepend(
$("<img />", {
"src":"assets/images/elec/XXXX.jpg",
"width":elem.css("width"),
"height":elem.css("height"),
"css": {
"position":"relative",
"left":((parseInt(elem.parent().css("width"))
- parseInt(elem.css("width"))) / 2) + "px"
}
})
);
它并不完美,但我认为您可以这样做:
function back() {
var h = $('img').parent().height(),
w = $('img').parent().width();
if (w <= h) {
$('img').each(function() {
$(this).css({
height: $(this).parent().height(),
minHeight: $(this).parent().height(),
minWidth: $(this).parent().width(),
width: 'auto'
});
});
} else {
$('img').each(function() {
$(this).css({
width: $(this).parent().width(),
minHeight: $(this).parent().height(),
minWidth: $(this).parent().width(),
height: 'auto'
});
});
}
};
$(window).load(back());
$(window).resize(function() {
back();
});
html,
body {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
}
.wrap {
overflow: hidden;
height: 50%;
width: 50%;
}
.cover {
background: url("http://i.stack.imgur.com/vNQ2g.png") no-repeat scroll 0% 0% / cover transparent;
height: 50%;
width: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="wrap">
<img src="http://i.stack.imgur.com/vNQ2g.png" alt="example" title="example" />
</div>
<div class="cover"></div>
您可以使用 HTML <img>
标签和纯 CSS 来调整图像大小。这样您就可以将图像作为 HTML 元素用于 SEO 目的,但您不必使用 JavaScript 来响应地更改大小。
HTML
<img src='assets/images/elec/XXXX.jpg'>
CSS
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
假设图像至少与其容器一样大,您可以直接使用(假设样式适用于 IMG 元素)
.page-electricite-generale .one {
max-width: 100%
max-height: 100%;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: -1;
}
您有几种可能的解决方案:
1.结合标签和背景图片
这个最简单。您像往常一样将图像放在标记中,但将其隐藏并在父元素上使用背景图像。所有现代浏览器只会下载您的图像一次并缓存它,因此您无需担心性能问题。请注意,您的图像根据文件具有正确的路径。
示例:
<div class="img-holder">
<img class="hidden" src="/assets/images/elec/XXXX.jpg" />
</div>
.hidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.img-holder {
background: url(assets/images/elec/XXXX.jpg) 50% 50% no-repeat;
background-size: cover;
// define your container width and height
}
2。 CSS 黑客
查看这篇文章:https://css-tricks.com/perfect-full-page-background-image/
那里列出了几种技术。这个对我有用:
.parent {
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
.parent img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
3。对象匹配 属性
img { object-fit: cover; }
这是新的 属性,基本上是标记中图像的 background-size
版本。不幸的是,还没有浏览器支持。
资源:
https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
http://caniuse.com/#feat=object-fit
感谢大家的回复。但是,我还没有找到我的问题的任何好的答案。所以让我更清楚。
目的
由于我在进行 SEO,因此我需要将图像作为 html 元素并模仿所有 css 属性。
我目前拥有的
我在 css 中添加了图像以便 expand/stretch 并始终将它们居中 div。
.page-electricite-generale .one {
background: url('assets/images/elec/XXXX.jpg') 50% 50% no-repeat;
background-size: cover;
}
可以看到,图片的中心始终居中,div里面没有任何crop/distortion。
我需要的
我想将图像集成为 html 元素并模仿以前的 jsfidle。
Here is the jsfidle with an html image
谢谢
尝试
elem.prepend(
$("<img />", {
"src":"assets/images/elec/XXXX.jpg",
"width":elem.css("width"),
"height":elem.css("height"),
"css": {
"position":"relative",
"left":((parseInt(elem.parent().css("width"))
- parseInt(elem.css("width"))) / 2) + "px"
}
})
);
它并不完美,但我认为您可以这样做:
function back() {
var h = $('img').parent().height(),
w = $('img').parent().width();
if (w <= h) {
$('img').each(function() {
$(this).css({
height: $(this).parent().height(),
minHeight: $(this).parent().height(),
minWidth: $(this).parent().width(),
width: 'auto'
});
});
} else {
$('img').each(function() {
$(this).css({
width: $(this).parent().width(),
minHeight: $(this).parent().height(),
minWidth: $(this).parent().width(),
height: 'auto'
});
});
}
};
$(window).load(back());
$(window).resize(function() {
back();
});
html,
body {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
}
.wrap {
overflow: hidden;
height: 50%;
width: 50%;
}
.cover {
background: url("http://i.stack.imgur.com/vNQ2g.png") no-repeat scroll 0% 0% / cover transparent;
height: 50%;
width: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="wrap">
<img src="http://i.stack.imgur.com/vNQ2g.png" alt="example" title="example" />
</div>
<div class="cover"></div>
您可以使用 HTML <img>
标签和纯 CSS 来调整图像大小。这样您就可以将图像作为 HTML 元素用于 SEO 目的,但您不必使用 JavaScript 来响应地更改大小。
HTML
<img src='assets/images/elec/XXXX.jpg'>
CSS
img.bg {
/* Set rules to fill background */
min-height: 100%;
min-width: 1024px;
/* Set up proportionate scaling */
width: 100%;
height: auto;
/* Set up positioning */
position: fixed;
top: 0;
left: 0;
}
@media screen and (max-width: 1024px) { /* Specific to this particular image */
img.bg {
left: 50%;
margin-left: -512px; /* 50% */
}
}
假设图像至少与其容器一样大,您可以直接使用(假设样式适用于 IMG 元素)
.page-electricite-generale .one {
max-width: 100%
max-height: 100%;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: -1;
}
您有几种可能的解决方案:
1.结合标签和背景图片
这个最简单。您像往常一样将图像放在标记中,但将其隐藏并在父元素上使用背景图像。所有现代浏览器只会下载您的图像一次并缓存它,因此您无需担心性能问题。请注意,您的图像根据文件具有正确的路径。
示例:
<div class="img-holder">
<img class="hidden" src="/assets/images/elec/XXXX.jpg" />
</div>
.hidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.img-holder {
background: url(assets/images/elec/XXXX.jpg) 50% 50% no-repeat;
background-size: cover;
// define your container width and height
}
2。 CSS 黑客
查看这篇文章:https://css-tricks.com/perfect-full-page-background-image/
那里列出了几种技术。这个对我有用:
.parent {
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
}
.parent img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
min-width: 50%;
min-height: 50%;
}
3。对象匹配 属性
img { object-fit: cover; }
这是新的 属性,基本上是标记中图像的 background-size
版本。不幸的是,还没有浏览器支持。
资源:
https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit http://caniuse.com/#feat=object-fit