这是一个有点奇怪的问题。使用可调整大小的div编写web应用程序。我现在使用CSS resize属性,因为它似乎是最简单的方法。问题是我的框有一个锁定的底部和左侧位置(我想保持),但默认选择的调整大小的角是右下角,这会产生奇怪的结果调整顶部。我在网上找了一下,但找不到一种方法把那个角移到右上角而不是右下角。对于如何产生这种结果有什么建议吗?也不反对使用不同的调整大小的方法。以下是应用于框的当前样式:
display: block;
font-size: 9pt;
position: absolute;
bottom: 50px;
left: 20px;
padding: 10px;
min-height: 0;
min-width: 0;
border: solid 1px black;
width:400px;
height:400px;
resize: both;
overflow-x: auto;
overflow-y: hidden;
这是一张有问题的div的图片,它的角上目前有一个调整大小工具。任何建议将不胜感激。我也很乐意详细说明我可能错过的事情。谢谢!
7条答案
按热度按时间hts6caw31#
这里有一个起点。我基本上在右上角创建了一个自定义调整大小的图标。然后我使用'mousedown','mousemove'和'mouseup'事件来跟踪调整大小的活动。你也许可以使用'拖动'和相关事件来做类似的事情。
注意'mousedown'在resize图标上,而'mousemove'和'mouseup'在文档正文(或可调整大小的div后面的其他较大元素)上。
为了简单起见,我在JavaScript中硬编码了宽度和高度。这意味着这些值存在于两个不同的地方,这是不好的。你可能应该只把它们放在JavaScript或CSS中,而不是像我这样同时放在两者中。
我需要将可调整大小的div放入填充body的容器中。否则,不会注册可调整大小的div之外的“mousemove”事件。如果在绝对定位的可调整大小的元素“后面”已经有其他内容,这可能不是问题。
供您参考:我最初也尝试使用原生的调整大小功能。我使用
transform: rotate(-90deg)
将调整大小的角移到右上角,然后使用transform: rotate(90deg)
放入内部div,使内部内容再次向右向上。然而,虽然这把调整大小的角落在正确的地方,调整大小本身是完全混乱的,因为鼠标的移动和实际调整大小本身是关闭了90度。这有点难以用语言来描述,但可以说,如果没有一些重大的重新工作(或者一些出色的代码或隐藏的函数),我就无法使该策略工作。如果您在Stack Overflow中运行此代码段,则需要在单击“Run code snippet”后单击“Full page”来展开运行视图区域。
dwbf0jvd2#
另一个肮脏的黑客:将容器的
direction
设置为rtl
,角将位于左侧请记住,您需要将内部div中的
direction
设置回ltr
,因此文本将按预期显示:yh2wf1be3#
这里有一个hack给你:
这个黑客的问题是,它仍然在相同的nwse方向调整大小,如光标所示。这意味着,当你从顶部向下拉时,它不会收缩,而是从底部膨胀。
lmvvr0a84#
从Andrew Willems到JS类的重构解决方案也可以保持全局范围的干净,并能够将其应用于多个div
如果您在Stack Overflow中运行此代码段,则需要在单击“Run code snippet”后单击“Full page”来展开运行视图区域。
ig9co6j15#
几年后,我仍然在寻找一种方法来做到这一点。
现在我找到了一种调整右下角元素大小的方法,使用左上角的调整锚。
在chrome中,它看起来像预期的那样工作,但是它依赖于远没有在任何标准中定义的行为,所以最好不要在任何生产环境中依赖它,除非你可以控制哪些客户端/浏览器使用这段代码。
完整的示例和解释在这里找到:https://jsfiddle.net/ElMoonLite/zvok7p1f/
核心代码:
rjee0c156#
这是一个内联版本,就像我希望一个正确的拖曳锚。注意,它有两个手柄,一个在右上方,我想要的,一个额外的底部为垂直轴。
关于垂直滚动的注解
.vertical-scroll { //也可以用作多个x-flip和x-flipback元素的换行
min-height:20px;//这可以防止与否定重叠
调整大小:垂直;
overflow:auto;//如果没有设置height属性,则在用户输入之前未定义
}
作为代码片段的替代,我在元素的外部使用了垂直滚动类。也许如果有一个以上的子翻转和翻转回来的元素,将看起来更好的一个垂直滚动点对齐在底部。
甚至去掉垂直滚动类。
k2arahey7#
下面的解决方案使用了“移动对象”技术,但保留了右下角。左上角的一个标准html箭头接受向下的光标,你现在可以“拖动”框,而左下角保持不变,有效地调整框的大小,但从左上角。这段代码可以独立运行: