javascript - 创建响应 div 16 :9

标签 javascript html css responsive-design

我正在创建一个 16:9 比例的响应式 div,但是当我调整窗口大小时 container3 仍然保持原始大小,我的代码有什么问题吗?任何人都可以帮助我吗?谢谢

$(document).ready(function(){
	rp_config();

});
$(window).resize(function(){
	rp_config();

});
function rp_config(){
	var windowwidth = $(window).width();
	var windowheight = $(window).height();
	var bar = 64;
	var bottom = 45;
	var chat = 250;
	var container2_width = windowwidth - chat;
	var available_height = windowheight - bar - bottom;
	
	$(".container").width(windowwidth);
	$(".container2").width(container2_width);
	$(".container3").width(available_height / 9 * 16);
	
	$(".container").height(available_height);
	$(".container2").height(available_height);
	$(".container3").height(available_height);
	
	

}
rp_config();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container" style="background-color:#000;">
	<div class="container2" style="background-color:#333;">
    	<div class="container3" style="background-color:#ccc;">
        
        </div>
    </div>
</div>

最佳答案

你需要判断container3的宽度是否大于container2。

$(document).ready(function(){
	rp_config();

});
$(window).resize(function(){
	rp_config();

});

function rp_config(){
  var windowwidth = $(window).width();
  var windowheight = $(window).height();
  var bar = 64;
  var bottom = 45;
  var chat = 250;
  var container2_width = windowwidth - chat;
  var available_height = windowheight - bar - bottom;
  

  var altWidth = available_height / 9 * 16
      ,altHeight = available_height;
  if (altWidth > container2_width) {
    altWidth = container2_width;
    altHeight = altWidth / 16 * 9;
  }   
  
  $(".container").width(windowwidth);
  $(".container2").width(container2_width);
  $(".container3").width(altWidth);
  
  $(".container").height(available_height);
  $(".container2").height(available_height);
  $(".container3").height(altHeight);
}
rp_config();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='case1' class="container" style="background-color:#000;">
	<div class="container2" style="background-color:#333;">
    	<div class="container3" style="background-color:#ccc;">
        </div>
    </div>
</div>
</div>

这里我使用altHeight让container3保持16:9的比例,如果你想让它填满container2的整个区域,你可以去掉它。

关于javascript - 创建响应 div 16 :9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30884564/

相关文章:

javascript - ES2015 模板字符串中 "tags"的用途是什么?

html - 对齐表单 - 在背景图像中间输入字段/按钮

css - CSS 中的 Bootstrap 列填充约束

css - 如何用CSS反转标题和正文的 float 顺序?

javascript - 在 IE 中使用带有数据属性的 javascript 向 DOM 添加脚本标签

javascript - 在元素上具有不同动画的 jQuery 幻灯片

html - 使用 flexbox 垂直对齐单个子元素

javascript - 按下 Enter 后,Jquery UI 自动完成功能不会提交

html - 传统 ASP 经典应用程序,需要一致的表格宽度、动态文本区域列?

javascript - wysihtml5 - 如何禁用下划线标签