css Div正方形,宽度大小基于100%高度

brvekthn  于 2022-12-01  发布在  其他
关注(0)|答案(9)|浏览(399)

我正在尝试制作一个响应式的正方形,其宽度大小基于元素的高度(100%)。我相信只使用CSS是不可能的。
正方形的宽度应该等于高度(大容器的100%。大容器超过屏幕的100%)。比例必须为宽度=高度以保持正方形。

ryevplcw

ryevplcw1#

你可以用一个很小的内联图像来完成这个任务。没有JS,没有额外的文件。
第一个

js81xvg6

js81xvg62#

对于仅限CSS的解决方案(相对于屏幕大小调整大小),请使用视口单位。例如:

@media screen and (orientation:landscape) {
    .box{
        height: 100vh;
        width: 100vh;
    }
}
@media screen and (orientation:portrait) {
    .box{
        height: 100vw;
        width: 100vw;
    }
}

(You可能希望将其减少到98个单位以消除滚动)
非常适合需要占据屏幕空间精确比例的divs。
JSFiddle here.

7gs2gvoe

7gs2gvoe3#

看一看... aspect-ratio属性。
这个属性使得基于高度创建一个正方形div成为可能,这是最简单的方法。下面是一些示例代码:
第一个
以下几个链接可帮助您了解aspect-ratio属性:

bz4sfanl

bz4sfanl4#

由于正方形的宽度和高度相同,并且您知道正方形的宽度,因此可以将相同的值应用于高度。
如果你能使用JS,那么请尝试一下:(jQuery)中的数据类型

var wiDth = $('div').css('width'); // get width
$('div').css('height', wiDth); // apply that value to the height

请在此处尝试:http://jsfiddle.net/afzaal_ahmad_zeeshan/vpGUK/

a14dhokn

a14dhokn5#

你可以使用javascript来完成这个任务。我假设你有一个更大的div容器,你想在其中放置一个正方形,它的高度与容器的高度相同。html如下所示:

<div id="container">
  <div id="square" style="height:100%;">

  </div>
</div>

在javascript中,您只需执行以下操作:

<script>
  var container = document.getElementById("container");
  var square = document.getElementById("square");

  square.style.width = container.style.height;

  window.onresize=function(){
    square.style.width = container.style.height;
  };
<script>

希望能有所帮助

qyzbxkaa

qyzbxkaa6#

我认为这对你来说是一个很好的“只使用CSS”的解决方案。跨浏览器工作。
http://absolide.tumblr.com/post/7317210512/full-css-fluid-squares
很好地强调了这条不错的css规则:
如果垂直填充(和边距)是以百分比(%)值指定的,则大小是包含元素宽度的百分比。

omhiaaxx

omhiaaxx7#

把它放到<script src="http://code.jquery.com/jquery-1.10.2.js"></script>上,然后用jquery试试:

var totalHeight = 0;
$("#yourContainer").children().each(function(){ 
    totalHeight += $(this).height;  
});
$("#yourContainer").css('width', totalHeight + 'px');
p3rjfoxz

p3rjfoxz8#

好了解决办法在这里。

<div id="square" style="background-color:black;height:100%">test</div>

$(window).ready(updateWidth);
$(window).resize(updateWidth);

function updateWidth()
{
var square = $('#square');
var size = square.height();

square.css('width',size);
}

http://jsfiddle.net/j372H/7/

ve7v8dk2

ve7v8dk29#

您可以像这样为容器指定宽度和高度

.container {
    width: 100vh;
    height: 100vh;
}

它将创建一个高度为100%且宽度=高度的正方形div。

相关问题