调整一个div比其宣称的尺寸?(Resize a div to smaller than its d

2019-08-01 16:39发布

有没有办法来调整一个div比申报的高度和宽度更小?

我在做一个应用程序,用户可以调整一个div并保存。 然而,当我后来加载它,它尺寸设定为用户设定的最后一次,他们可以在div做大,而不是更小。

这是一个示例的div:

.cls {
  border: solid 1px;
  width: 100px;
  height: 100px;
  resize: both;
  overflow: auto;   
}​

http://jsfiddle.net/FNXnD/

这个问题有相同的问题,但使用GWT似乎并没有有一个很好的解决方案。

Answer 1:

您请求一种解决方法您的问题,或不知道如何,至少。 我让你一个简单的解决方法可能需要一点点工作; 注意这是一个解决办法,因此可能包含毛刺。

.cls {
    width: 100px;
    height: 100px;
    resize: both;
    overflow: auto;
    border: 1px dotted #000;
}

.cls:hover {
    width: 1px;
    height: 1px;
}

更新小提琴: http://jsfiddle.net/FNXnD/1/

  • 需要注意的Chrome和Safari可能会在未来的版本中改变CSS3调整大小功能。


Answer 2:

如果你想使用CSS3 UI调整大小功能,那么你的浏览器决定您是否可以使它比宣布宽度或高度较小或较大。 http://www.w3.org/TR/css3-ui/#resize

用户代理可以限制调整大小至合适的东西,如元素的原始格式的大小,并足够大以包含所有元素的内容之间。

在Firefox例如,你可以调整它比你的声明宽度或高度。 虽然在铬你不能。



Answer 3:

只是想稍微修改一下Pfft在接受的答案说。

如果你使用:active伪类,而不是:悬停它没有闪烁,当你将鼠标悬停在元素。 那闪烁实在是烦人。

div:active {
  width: 0;
  height: 0;
}

通过使用:主动发生的事情是它会被调整到高度的元素,当点击:0,宽度:0这样一个小圆点在那里1px的边框将被显示,但只要用户开始调整你得到什么你希望在调整大小。 而在随后每次调整大小,没有毛刺,它只是完美的作品。

我觉得这是比使用悬停那么讨厌。 由于Pfft针对上述响应,这正是我一直在寻找,并导致我对我自己稍微改动的解决方案!

下面是它的jsfiddle: http://jsfiddle.net/kronenbear/v4Lq5o09/1/



Answer 4:

或者你可以使用jQuery的UI,使一个可调整大小的窗口。

我继续解决的一些问题,尝试使用jQuery UI的可调整大小的小部件用的div有一个滚动溢出,当我经历。 问题是,缩放柄被定位在滚动条内。

为了解决这个问题我做了嵌套彼此内部的三个div的

第一种是包装,是你设置div的起始大小。

第二个是用于把手,其大小应设置为它的父DIV(包装DIV)的100%。 你将不得不调整的z-index将它们定位到最终的滚动条。

第二个DIV还应该包含可拖动手柄DIV和窗口DIV您的所有窗口的内容会。

两者可拖动手柄DIV(.draggable)和窗口DIV(.window)需要被相对定位。 让他们彼此等正确定位可拖动手柄不会超过你的滚动条的顶部。

该.window DIV的规模应为100%父格,就像之前的股利。 这其中将有一个滚动溢出。 现在,因为当你调整,这是等于100%手柄的div使用jQuery手柄格UI也将调整这个div。

可拖动的div设置为100%的宽度和高度无论你想要的,但任何增加的高度将推窗格进一步下降,然后把手DIV,你需要填充底部等量的手柄DIV添加到解决这个问题。 你还需要将把手DIV溢出设置为可见。

毕竟任何你想要的造型不同的元素,你应该是好事,补充。 它很难解释,但我希望这是有道理的。 所有的代码如下,希望这有助于更好地解释然后我的散漫。 这肯定让你调整窗口的大小小,左右移动DIV,也有你的DIV,你应该希望它滚动溢出。

HTML

<!DOCtype html>
<html lang="en">
<head>
    <title>Adjustable Window</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="../css/adjWindow.css">
    <link rel="stylesheet" type="text/css" href="../jquery-ui-1.11.4/jquery-ui.min.css">
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <script type="text/javascript" src="../jquery-ui-1.11.4/jquery-ui.min.js"></script>
    <script type="text/javascript" src="../js/adjWin.js"></script>
</head>
<body id="top">
   <div class="winWrap">
        <div class="handles">
            <div class="draggable"><p>Window Title</p></div>
            <div class="window">
                <div class="windowContent">
                </div>
            </div>
        </div>
    </div>
</body>
</html>

CSS

.winWrap {
    position: relative;
    width: 500px;
    height: 500px;
}
.draggable {
    position: relative;
    width: 100%;
    height: 20px;
    box-shadow: inset 0px 0px 6px rgba(0,0,0,0.9);
    background-color: rgba(255,255,255,0.5);
    text-align: center;
    z-index: 1;
}
.draggable p {
    padding: 2px;
    margin: 0px;
    cursor: default;
}
.handles {
    position: relative;
    width: 100%;
    height: 100%;
    padding-bottom: 20px;
    overflow: visible;
    box-shadow: 20px 15px 20px rgba(0,0,0,0.4);
    z-index: 1;
}
.window {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: scroll;
    background-color: rgba(0,0,0,0.1);
    box-shadow: inset 0px 0px 10px rgba(0,0,0,0.7);
}
.windowContent{
    position: absolute;
}

jQuery和jQuery的UI是使用带有可调整大小的插件的了minHeight和minWidth选项,否则你的窗口就可以被调整到几乎没有一个好主意,并可能导致一些讨厌的副作用,如使DIV这么小,你需要重装页面点击调节柄。 它也只是在我看来看起来更加专业。

可拖动小工具,你的目标你要走动,然后给它的可拖动DIV我们摆在我们窗口的div的处理整个DIV的包装。

/*global $, jQuery, alert*/
$(document).ready(function () {
    'use strict';
    $('.handles').resizable({minHeight: 100, minWidth: 100});
    $('.winWrap').draggable({handle: '.draggable'});
});


Answer 5:

$('.cls').css('height', 200);
$(".cls").mouseup( function(){
var height = $(".cls").height();
var width = $(".cls").width();
if(height>=200){
$('.cls').css('height', 200);
}
if(width>=100){
$('.cls').css('width', 100);  
}
var
newdimensions="newheight="+height+"&"+"newwidth="+width;
});


Answer 6:

在JavaScript usign jQuery的:

//get the current heigt and the width of the element
var h = $('.cls').height();
var w = $('.cls').width();
// i don'T know how you provide your nes size, but once you have in i a variable, you can just do
if(your_h > h) $('.cls').height(your_h);
if(your_w > w) $('.cls').width(your_w);

假设你大小是PX。

如果没有指定参数的高度()和宽度()将在像素返回的大小。 他们将设置宽度和高度,如果你提供一个值。 如果你没有明确指定一个mesurment,PX默认情况下使用。

在第二部分,它只是检查,如果新的大小(your_x)比originla大小biggre,如果是的话,它会调整它的大小,如果没有它会突出部分忽略。

是的,jQuery将overwide你的CSS规范;)任何人,比格尔或更小的值



Answer 7:

使用很重要的,从CSS重写它!

.cls {
  border: solid 1px;
  width: 100px !important;
  height: 100px !important;
  resize: both;
  overflow: auto;   
}


文章来源: Resize a div to smaller than its declared size?