我有一个非常简单的页面,页面左侧有一个固定的侧边栏。在右侧,在内容区域,我有一个日期选择器。但是当我滚动右边的主要内容时,我不希望侧边栏上下移动。所以我用以下CSS修复了内容区域:
.content {
overflow: auto;
height: 100%;
}
但问题是,由于上面的CSS,当日期选择器在内容区域中打开时,它在滚动期间不会移动。这是一个完整的例子: Fiddle
滚动时日期选择器不随字段移动。我该如何解决?还有什么办法可以在输入字段的上方或下方动态打开它,具体取决于浏览器的屏幕区域? (就像目前它在右上方区域打开一样,即使它被设置为pickerPosition: 'top-right'
也无法完全看到。这非常不方便。)
提前感谢您的建议。
答案 0 :(得分:2)
使用滚动事件和一些数学
$('.content').on('scroll',function(){
var offset = $('#datetimepicker').offset().top;//get the offset of the element
$('.datetimepicker').css({'top':offset-$('.datetimepicker').height()-20});//set the offset to the picker modal subtract its height and the input height
});
答案 1 :(得分:1)
我建议在滚动期间关闭datetimepicker是个更好的主意。就像用户点击其他内容或滚动条一样。
$(".content").scroll(function() {
if ($(".datetimepicker").css("display") == "block")
$(".datetimepicker").css("display", "none");
});
答案 2 :(得分:1)
使侧边栏固定并具有静态宽度,然后将带有侧边栏宽度的左边距应用于内容。并且不需要浮动,因为侧边栏元素已经与剩余的DOM(固定位置)位于单独的层上
$(document).ready(function() {
$('.form_datetime').datetimepicker({
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
forceParse: 0,
showMeridian: 1,
pickerPosition: 'top-right',
});
});
html,
body {
padding: 0;
margin: 0;
}
.wrapper {
position: relative;
top: 0;
left: 0;
height: 100vh;
width: 100vw;
}
.sidebar {
position: fixed;
width: 120px;
top: 0;
bottom: 0;
left: 0;
background-size: cover;
background-position: center center;
}
.content {
position: relative;
margin-left: 120px;
width: calc(100vw - 120px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/smalot-bootstrap-datetimepicker/2.4.4/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/smalot-bootstrap-datetimepicker/2.4.4/js/bootstrap-datetimepicker.min.js"></script>
<div class="wrapper">
<div class="sidebar">
<div class="sidebar-wrapper">
<p>Sidebar</p>
</div>
</div>
<div class="content">
<p>
||<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br>
</p>
<div class="form-group">
<label for="name" class="col-md-2">Date</label>
<div class="col-md-5">
<div class="input-group date form_datetime" id="datetimepicker">
<input class="form-control" size="16" type="text" value="" readonly>
<span class="input-group-addon"><span class="fa fa-times-circle"></span></span>
<span class="input-group-addon"><span class="fa fa-calendar"></span></span>
</div>
</div>
</div>
<p>
||<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br> ||
<br>
</p>
</div>
</div>