gpt4 book ai didi

javascript - 将 css background-image : url(. ..) 替换为 标签并保持滚动效果

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:37 25 4
gpt4 key购买 nike

我想为我网站上的图片添加 alt 标签以改进 SEO。问题是我使用 CSS background-image: url(...) 嵌入它们。

它创建了所需的滚动效果(见下文),但不利于 SEO。

当前代码:

.text {
margin: 200px 20px;
}
.image-background {
background-attachment: fixed;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: 100%;
display: block;
height: 800px;
margin-bottom: 150px;
margin-left: -1500px;
margin-right: -1500px;
margin-top: 150px;
width: 3500px;
}
.image1 {
background-image: url(https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg);
}
.image2 {
background-image: url(http://media1.santabanta.com/full1/Animals/Cats/cats-149a.jpg);
}
<div class='text'>
Lorem ipsum dolores...
</div>
<div class='image-background image1'></div>
<div class='text'>
Lorem ipsum dolores...
</div>
<div class='image-background image2'></div>
<div class='text'>
Lorem ipsum dolores...
</div>

问题是:如何添加 <img>带有 alt 的标签不破坏视觉外观的属性?

编辑:

我尝试将 与 css position:fixed 一起使用,但无法让它很好地工作有多个图像 ( my broken jsfiddle here )。

编辑 2:

这些图像是网站内容的一部分,不是布局。他们应该使用 alt 标签,我并不是想以“糟糕”的方式填充更多关键字。我最初把它们作为背景来达到视觉效果。现在我想修正错误,但不改变网站的外观。我在说about my photos on this blog .

编辑 3:

我不想在这里使用 CSS。任何代码修改、JS 库或几乎任何东西都可以!

最佳答案

方法一

此方法不会改变图像的可见性,因此我认为完全没有关于 SEO 的问题。但它更复杂,并且有一个警告,即每次只能出现一个图像。因此文本的 div 必须填满整个屏幕,从而产生较大的填充。

$(function(){
var texts = $('.text');
var oldY = 0;

$(document).scroll(function(){
var y = window.scrollY;

texts.each(function(){
var text = $(this);

if(y >= text.offset().top)
text.next().addClass('active');
else
text.next().removeClass('active');
});
});
});
body{
padding: 0;
margin: 0;
}

.text{
padding: 20px;
margin: 0 0 600px;
position: relative;
z-index: 3;
background-color: #fff;
min-height: 100vh;
display: flex;
align-items: center;
}
.background-img img{
position: fixed;
top: 0;
left: 0;
z-index: 1;
width: 100%;
}
.background-img.active img{
z-index: 2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class='text'>
Lorem ipsum dolores...
</div>
<div class="background-img active">
<img src="https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg" alt="Image 1">
</div>
<div class='text'>
Lorem ipsum dolores...
</div>
<div class="background-img">
<img src="http://media1.santabanta.com/full1/Animals/Cats/cats-149a.jpg" class="background-img" alt="Image 2">
</div>
<div class='text'>
Lorem ipsum dolores...
</div>

方法二

这个比较简单,说实话和你原来的代码差不多。不同之处在于,一旦页面加载,图像就会被隐藏,然后复制为其父 div 的背景图像。优点是可以同时看到多张图片,效果更好。

$(function(){
$('.background-img img').each(function(){
var img = $(this).hide();
img.parent().css('background-image', 'url(' + img.prop('src') + ')');
});
});
body{
padding: 0;
margin: 0;
}

.text{
padding: 200px 20px;
position: relative;
z-index: 3;
background-color: #fff;
}

.background-img{
height: 400px;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class='text'>
Lorem ipsum dolores...
</div>
<div class="background-img">
<img src="https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg" alt="Image 1">
</div>
<div class='text'>
Lorem ipsum dolores...
</div>
<div class="background-img">
<img src="http://media1.santabanta.com/full1/Animals/Cats/cats-149a.jpg" class="background-img" alt="Image 2">
</div>
<div class='text'>
Lorem ipsum dolores...
</div>

关于javascript - 将 css background-image : url(. ..) 替换为 <img> 标签并保持滚动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com