单击HTML展开框
HTML expanding boxes on click
我想创建三个带有短文本的框,当你点击其中一个框时,它会扩展到页面的整个宽度并显示整个内容。然后可以通过点击某种图标来关闭它。
我创建了一个gif,这样你就可以明白我的意思了。GIF
到目前为止,我已经掌握了jsfiddle 的基本结构
当你点击一个框时,它每次都会打开框3的内容,而不是点击框的内容。此外,我不知道如何关闭打开的盒子。
你在gif中看到的动画可以用css吗?还是需要javascriptl?
$(".row.boxes-container .box").click(function (e) {
$(".box-content-full").addClass("open");
});
.row.boxes-container{
position:relative;
}
.box:hover{
cursor:pointer;
}
.box-content{
padding:30px;
background-color:#f03939;
}
.box-content-full{
display:none;
width:0%;
transition: width 1s;
}
.box-content-full.open {
position: absolute;
max-width: 100%;
width: 100%;
z-index: 2;
display:block;
transition: width 1s;
}
.box-content-full.open .inner{
padding:30px;
margin-left:15px;
margin-right:15px;
background-color: red;
}
<div class="container">
<div class="row boxes-container">
<div class="box first">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 1</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 1</h3>
</div>
</div>
</div>
<div class="box second">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 2</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 2</h3>
</div>
</div>
</div>
<div class="box third">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 3</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 3</h3>
</div>
</div>
</div>
</div>
</div>
我没有使用你的html代码,但试图获得尽可能接近你的gif:的结果
$('.box').on('click', function() {
var $element = $(this);
var $openElement = $('<div class="absoluteBox"></div>');
$openElement.css('left', $element.position().left);
$openElement.css('right', $element.width());
$element.html($openElement);
$openElement.animate({left : 0, width : $('.wrapper').width()}, 500);
});
.wrapper {
position:relative;
display:inline-block;
}
.box {
background-color:#CC0000;
width:150px;
height:200px;
display:inline-block;
margin-right:10px;
}
.box:last-of-type {
margin-right:0;
}
.absoluteBox {
position:absolute;
background-color:blue;
height:200px;
width:150px;
}
.box:hover {
background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="wrapper">
<div class="box"></div>
<div class="box">
</div>
<div class="box"></div>
</div>
我把打开的盒子改成蓝色,以便更好地引起注意。当然,这必须通过css更改为红色。
更新了你的小提琴:
第2版:
现在,当您单击该框时,它应该会重置。
第页。S.单击第二个框以获得效果
P.P.S.由于页面在JSFiddle中自动收缩,因此效果显示不正确。尽管如此,如果你在其他地方尝试,但它不起作用,那就认为我错了!
编辑:
已更新答案以展开单击的元素。
https://jsfiddle.net/bszv7f90/9/
$(".row.boxes-container .box").click(function(e) {
$(this).children().each(function(i) {
if ($(this).attr('class') == 'box-content-full') {
$(this).toggleClass("exp");
}
});
$(".box-content-full").toggleClass("open");
$(".box-content").toggleClass("clicked");
});
.container {
max-width: 600px;
}
.row.boxes-container {
position: relative;
}
.box:hover {
cursor: pointer;
}
.box-content {
padding: 30px;
background-color: #f03939;
}
.box-content-full {
display: none;
width: 0%;
transition: width 1s;
}
.box-content {
padding: 30px;
background-color: #f03939;
}
.box-content.clicked {
display: none;
}
.box-content-full.open {
position: absolute;
max-width: 0%;
width: 0%;
z-index: 2;
display: none;
transition: width 1s;
}
.box-content-full.open.exp {
position: absolute;
max-width: 100%;
width: 100%;
z-index: 2;
display: block;
transition: width 1s;
}
.box-content-full.open .inner {
padding: 30px;
margin-left: 15px;
margin-right: 15px;
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="row boxes-container">
<div class="box first">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 1</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 1</h3>
</div>
</div>
</div>
<div class="box second">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 2</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 2</h3>
</div>
</div>
</div>
<div class="box third">
<div class="box-content-full">
<div class="inner">
<div class="inner-header">
<span class="close">x</span>
</div>
<h3>Box 3</h3>
<p>Lorem ipsum dolem filum</p>
</div>
</div>
<div class="col-md-4">
<div class="box-content">
<h3>Box 3</h3>
</div>
</div>
</div>
</div>
</div>
现在它应该扩大了。我保留了你的代码,以便快速复制粘贴。
相关文章:
- 如何通过单击html按钮获得h1的文本值
- 单击和dblclick在同一个html上传递不同的parentNodes.为什么?
- 单击鼠标,用MySQL数据填充html表单输入字段
- 编辑弹出窗口的HTML的单击命令
- 我们可以在HTML中禁用右键单击锚标记吗
- 使用jquery插入动态HTML后,单击不起作用
- 单击HTML展开框
- javascript,HTML表单:单击按钮插入NULL
- Javascript单击更改HTML的内容
- HTML按钮在单击时表现得很奇怪
- 一个html/javascript'小工具'知道用户何时单击了小部件外的任意位置
- HTML:禁用时可以单击锚点
- 单击按钮添加HTML表单
- 单击扩展图标时打开popup.html
- 如何确定使用 javascript/html 单击了哪个对象/图像
- HTML 单击将文本框值追加到链接
- 如何在 Node.js 中从客户端调用服务器端函数(例如.html单击按钮)
- 这只会删除表中的第一行.我希望它删除我使用jQuery和html单击的任何行
- 使用JS或HTML单击单选按钮更改图像
- Html单击事件没有在页面上显示结果(通过使用JavaScript)