我有一个带有jumbotron类的div,它有一个背景图像。
我还有一个包含6个项目的菜单。
我想使用javascript或jQuery来改变jumbotron的背景图像,具体取决于单击的菜单项。每个菜单项都有自己独特的图片,我想将其替换为.jumbotron的背景图片。
HTML:
<div class="jumbotron">
</div>
<ul class="nav nav-tabs">
<li><a href="#" data-toggle="tab">Item 1</a></li>
<li><a href="#" data-toggle="tab">Item 2</a></li>
<li><a href="#" data-toggle="tab">Item 3</a></li>
<li><a href="#" data-toggle="tab">Item 4</a></li>
<li><a href="#" data-toggle="tab">Item 5</a></li>
<li><a href="#" data-toggle="tab">Item 6</a></li>
</ul>
CSS:
.jumbotron {
background-image: url(../images/item1.jpg);
}
答案 0 :(得分:1)
您可以使用css
:target
,<img>
元素
.jumbotron {
width: 100%;
height: 100%;
display: block;
}
.jumbotron img {
width: calc(100vw);
height: calc(100vh);
}
.jumbotron :not(:target) {
display: none;
}
img:target {
display: block;
}
.nav,
.jumbotron {
position: absolute;
}
<div class="jumbotron">
<img src="https://lorempixel.com/400/400/cats" id="cats">
<img src="https://lorempixel.com/400/400/sports" id="sports">
<img src="https://lorempixel.com/400/400/animals" id="animals">
<img src="https://lorempixel.com/400/400/nature" id="nature">
<img src="https://lorempixel.com/400/400/abstract" id="abstract">
<img src="https://lorempixel.com/400/400/city" id="city">
</div>
<ul class="nav nav-tabs">
<li><a href="#cats" data-toggle="tab">Item 1</a></li>
<li><a href="#sports" data-toggle="tab">Item 2</a></li>
<li><a href="#animals" data-toggle="tab">Item 3</a></li>
<li><a href="#nature" data-toggle="tab">Item 4</a></li>
<li><a href="#abstract" data-toggle="tab">Item 5</a></li>
<li><a href="#city" data-toggle="tab">Item 6</a></li>
</ul>
答案 1 :(得分:0)
我会在数据属性中放置图像的路径,在单击时读取该图像,并将其指定为元素的背景图像。
$('.nav-tabs a').on('click',function(e) {
var bg = $(this).attr('data-bg');
$('.jumbotron').css('background-image','url('+bg+')');
})
.jumbotron {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
z-index: -1;
background: 0 0 no-repeat / cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="jumbotron"></div>
<ul class="nav nav-tabs">
<li><a href="#" data-toggle="tab" data-bg="http://cdn.thedailybeast.com/content/dailybeast/articles/2015/03/31/neil-degrasse-tyson-defends-scientology-and-the-bush-administration-s-science-record/jcr:content/image.img.2000.jpg/1432067001553.cached.jpg">Item 1</a></li>
<li><a href="#" data-toggle="tab" data-bg="http://3.bp.blogspot.com/_EqZzf-l7OCg/TNmdtcyGBZI/AAAAAAAAAD8/KD5Y23c24go/s1600/homer-simpson-1280x1024.jpg">Item 2</a></li>
<li><a href="#" data-toggle="tab" data-bg="http://public.media.smithsonianmag.com/legacy_blog/npg_portraits_nicholson_jack_2002.jpg">Item 3</a></li>
</ul>
答案 2 :(得分:0)
只需为每个元素添加点击处理程序,只需点击它们即可更改背景图片。
如果您想使用有关选项卡的其他一些信息,我可能会添加一些可以引用的data
属性(即您需要的URL)。
$(".nav.nav-tabs li a").click(function(){
$(".jumbotron").css("background-image", "url('"+$(this).data("url")+"')");
});
&#13;
.jumbotron {
background-image: url(../images/item1.jpg);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="jumbotron">
</div>
<ul class="nav nav-tabs">
<li><a href="#" data-toggle="tab" data-url="../images/item1.jpg">Item 1</a></li>
<li><a href="#" data-toggle="tab" data-url="../images/item2.jpg">Item 2</a></li>
<li><a href="#" data-toggle="tab" data-url="../images/item3.jpg">Item 3</a></li>
<li><a href="#" data-toggle="tab" data-url="../images/item4.jpg">Item 4</a></li>
<li><a href="#" data-toggle="tab" data-url="../images/item5.jpg">Item 5</a></li>
<li><a href="#" data-toggle="tab" data-url="../images/item6.jpg">Item 6</a></li>
</ul>
&#13;
答案 3 :(得分:0)
我使用jQuery捕获导航容器的click
事件,并根据特定的单击元素关联background-image
元素的.jumbotron
属性。
换句话说:
$('.jumbotron').click(function() {
var target = $(this).attr('id');
var background;
switch (target) {
case 'someId-1':
background = 'some-url';
break;
case 'someId-2':
background = 'some-url';
break;
case 'someId-3':
background = 'some-url';
break;
case 'someId-4':
background = 'some-url';
break;
case 'someId-5':
background = 'some-url';
break;
case 'someId-6':
background = 'some-url';
break;
}
$('.jumbotron').css('background-image', 'url(' + background + ')')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="jumbotron">
</div>
<ul class="nav nav-tabs">
<li><a href="#" id="someId-1" data-toggle="tab">Item 1</a></li>
<li><a href="#" id="someId-2" data-toggle="tab">Item 2</a></li>
<li><a href="#" id="someId-3" data-toggle="tab">Item 3</a></li>
<li><a href="#" id="someId-4" data-toggle="tab">Item 4</a></li>
<li><a href="#" id="someId-5" data-toggle="tab">Item 5</a></li>
<li><a href="#" id="someId-6" data-toggle="tab">Item 6</a></li>
</ul>
另一种选择是为每个图像定义不同的CSS类,并根据点击的链接切换一个或另一个。
答案 4 :(得分:0)
很好,很容易。只需交换一个CSS类。您可以稍后编辑css以更改图片大小,位置,实际图像,而无需触摸代码。
<html>
<head>
<style>
.btnOne {
background-image: url('obi.jpg');
}
.btnTwo {
background-image: url('luke.jpg');
}
.picStyle {
width: 75px;
height: 75px;
}
</style>
</head>
<body>
<div id="btn1" onclick="changeIt ( this )">Button 1</div>
<div id="btn2" onclick="changeIt ( this )">Button 2</div>
<div id="pic" class="btnOne picStyle"></div>
<script>
function changeIt ( elem ) {
let pic = document.getElementById ( 'pic' );
if ( elem.id === 'btn1' ) {
pic.classList = [ 'btnOne', 'picStyle' ];
} else {
pic.classList = [ 'btnTwo', 'picStyle' ];
}
}
</script>
</body>
</html>
答案 5 :(得分:0)
如果您将图像命名为item1,item2等,则以下内容将起作用:
__set__