使用 CSS3 Resize 属性分割窗格

发布于 2024-09-24 10:31:22 字数 615 浏览 2 评论 0原文

我一直在尝试使用 CSS3 属性来调整分割窗格的大小。

代码如下:

<style>

div.left, div.right {float: left; outline: solid 1px #ccc; 
resize: both; overflow: auto;}

div.left {width: 20%}

div.right {width: 80%}

</style> 

<div class="left"> 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
</div> 

<div class="right"> 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
</div> 

问题是,如果我调整左侧 div 的大小,右侧 div 不会缩小,并且会被推到底部。有没有其他方法可以在不使用 javascript 的情况下制作分割窗格?

比如说,如果使用 CSS3 无法完成并且确实需要使用 javascript,那么如果可以的话,javascript 应该最少。

谢谢你。

I've been trying to do split pane resizing using the CSS3 property.

Here is the code:

<style>

div.left, div.right {float: left; outline: solid 1px #ccc; 
resize: both; overflow: auto;}

div.left {width: 20%}

div.right {width: 80%}

</style> 

<div class="left"> 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
</div> 

<div class="right"> 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
</div> 

The problem is if i resize the left div, the right div won't shrink and its being pushed to the bottom. Are there any other ways that I can make the split pane without using the javascript?

Say, if it can't be done using CSS3 and really need to use the javascript, the javascript should be minimal if can.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

善良天后 2024-10-01 10:31:22

我不确定为什么您期望其他元素调整大小 - 在您的标记中它们之间似乎没有任何关系?

假设您的目标是 WebKit 和 Firefox 开发快照,这应该可以完成您感兴趣的大部分操作:

  1. 创建一个包装器元素并将其设置为 display: box (使用适当的供应商前缀)
  2. 设置以下之一将元素设置为固定大小但可调整大小,否则浏览器会变得过于混乱
  3. 将另一个设置为 box-flex: 1 (再次使用 适当的供应商前缀)

这是一个工作示例,在 Chrome 中比在 Firefox 中工作得更好 - 如果您需要支持任何其他浏览器,那么您将需要 JavaScript 解决方案。

--edit:

刚刚对这个旧答案投了赞成票,旧示例不适用于新版本的 Flexbox,因此

I'm not sure why you're expecting the other element to resize - there doesn't appear to be any relationship between them in your markup?

Assuming you're targeting WebKit and Firefox development snapshots, this should do most of what you're interested in:

  1. Create a wrapper element and set it to display: box (using appropriate vendor prefixes)
  2. Set one of your elements to be fixed size but resizable, otherwise things just get too confusing for the browser
  3. Set the other to be box-flex: 1 (again with appropriate vendor prefixes)

Here's a working example, works better in Chrome than Firefox - if you need any other browsers supported then you'll need a JavaScript solution.

--edit:

Just got an upvote on this old answer, the old example doesn't work with the new version of flexbox, so here's a new example. In the above steps replace display: box with display: flex and box-flex: 1 with flex: 1 1 0;.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文