如何构建保留最小尺寸,在可能的情况下进行拉伸,显示浏览器级别滚动条的Vaadin设计

地精

我维护的Vaadin应用程序的基本视觉结构由居中的工作区域组成,该工作区域主要由TabSheet实现的菜单组成。内部工作区域(至少当前)具有固定的宽度。

我想要实现的是:

  1. 工作区应延伸到视口的底部,但垂直方向上的宽度不得小于400px。
  2. 调整视口大小时,工作区域应适应(水平位置和垂直尺寸)。
  3. 如果视口的高度或宽度小于工作区,则滚动条应出现在视口上(即不在工作区上)
  4. 在iOS或Android设备上,位置栏应消失。关于这一点的注释:我注意到,与“普通”网站不同,Vaadin应用程序计算的高度似乎急切地缩小了尺寸,以便移动设备上的浏览器无需隐藏位置栏以获得更多房地产。

这是我的一种尝试:

public class VaadinApplicationImpl1 extends Application {
  private static final long serialVersionUID = 1L;

  @Override
  public void init() {
    setTheme("sample");
    setMainWindow(new Window() {{
      setCaption("Vaadin-Layouting Sample");
      setContent(
        new CssLayout() {{
          addStyleName("workareacontainer");
          addComponent( 
            new TabSheet() {{
              addTab(
                new VerticalLayout() {{
                  setSizeFull();
                  setSpacing(true);
                  Label l = new Label("Workarea");
                  addComponent(l);
                  setExpandRatio(l, 1.0f);
                  addComponent(
                    new HorizontalLayout() {{
                      setSpacing(true);
                      addComponent(new Button("Button 1"));
                      addComponent(new Button("Button 2"));
                    }}
                  );
                }}, 
                "First"
              );
            }}
          );
        }}
      );
    }});
  }
}

哪里

.workareacontainer {
    min-height: 400px;
    height: 100%;
}

.workareacontainer > div {
    position: relative;
    height: 100%;
    width: 800px;
    min-width: 800px;
    margin: 0 auto;
    background-color: red;
}

.workareacontainer > div > div {
    position:absolute;
    top:5px;
    bottom:5px;
    left:5px;
    right:5px;
    background-color: green;
}

结果是按我的需要将标签页拉伸并居中,但在调整浏览器大小时不会调整大小。这是CssLayout的限制吗?可以克服吗?

此外,我只会得到垂直滚动条,而不会得到水平滚动条。任何想法如何解决?

假设从Panel和setSizeUndefined()的内部布局开始,您可以获得浏览器级别的滚动条。不过,这似乎仅在没有100%拉伸要求的情况下有效。

抱歉,如果这是重复的操作,而我只是无法从其他问题中找到好的解决方案。

任何建议都很好!

伊瓜罗

据我了解您的问题,您希望工作区动态地集中在浏览器视图尺寸的百分之一处,不是吗?我设法重现了您的示例,并解决了最小尺寸的滚动条和将css调整为以下内容的动态居中问题:


更新资料

通过以下修改,TabSheet调整大小以适应容器div。

public class Vaadinapplicationimpl1Application extends Application {
    private static final long serialVersionUID = 1L;

    @Override
    public void init() {
        setTheme("sample");
        setMainWindow(new Window() {{
                setCaption("Vaadin-Layouting Sample");
                setContent(new CssLayout() {{
                        addStyleName("workareacontainer");
                        setSizeFull();
                        addComponent(new TabSheet() {{
                                // If you set the width to "100%" the TabSheet will overflows the
                                // the green and red divs. Set this to 100% and add 
                                // "overflow-x:hidden" to the CSS if you don't care about
                                // the right margin  
                                setWidth("99%");

                                addTab(new VerticalLayout() {{
                                        setSpacing(true);
                                        Label l = new Label("Workarea");
                                        addComponent(l);
                                        addComponent(new HorizontalLayout() {{
                                                setSpacing(true);
                                                addComponent(new Button("Button 1"));
                                                addComponent(new Button("Button 2"));
                                            }
                                        });
                                    }
                                }, "First");
                            }
                        });
                    }
                });
            }
        });
    }
}

还将CSS文件更改为以下内容:

.workareacontainer {
    min-height: 400px;
    height: 100%;

    /* 
    Add a minimun width to the "workareacontainer" container div, 
    the browser will use this value when the resize event takes in
    for the minimun width calculation (as it does for the height) 
    */
    min-width: 800px;
}

.workareacontainer > div {
    height: 100%;

    /* 
    Add extra padding to the right
    so the green div shows contained inside this
    */
    padding: 5px;        
    padding-right: 30px;

    /* 
    Replace this line 
       width: 800px;
    with: 
    */
       width: 90%; 
    /* 
    Here you make the workarea adaptable to the browser's width size, 
    leaving a small gap of 5% at both margins that will make your 
    workarea look "centered" 
    */

    min-width: 800px;
    margin: 0 auto;
    background-color: red;
}

.workareacontainer > div > div {
    /* 
    Remove the absolute positioning, add extra padding to the right
    so the TabSheet shows contained inside the div
    */
      padding: 5px;
    padding-right: 20px;

    height:100%;
    width:100%;

    background-color: green;
}

在Google的Chromium 30.0.1599.114和Firefox 25.0.1中进行了测试(建议CSSLayout一起使用时测试浏览器的兼容性)。

在此处输入图片说明

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不删除选择框滚动条的情况下删除浏览器滚动条

来自分类Dev

如何在不删除选择框滚动条的情况下删除浏览器滚动条

来自分类Dev

如何在不破坏功能的情况下隐藏跨浏览器的滚动条

来自分类Dev

是否可以在不拉伸或不显示滚动条的情况下使我的幻灯片中的所有图像全尺寸

来自分类Dev

如何在不显示垂直滚动条的情况下显示标题?

来自分类Dev

如何使固定的div覆盖浏览器的滚动条?

来自分类Dev

如何使浏览器滚动条静态

来自分类Dev

如何使浏览器滚动条静态

来自分类Dev

引导如何在减小浏览器大小时显示滚动条

来自分类Dev

如何获得Tkinter在没有滚动条的情况下显示非常大的图像?

来自分类Dev

没有滚动条尺寸的情况下如何获得内部窗口的高度?(不能通过clientHeight)

来自分类Dev

为什么Chrome浏览器从不显示更新说明,以及在可能的情况下如何查看说明

来自分类Dev

如何在不使用jQuery或javascript更改浏览器设置的情况下保留cookie?

来自分类Dev

fancybox滚动条未在iPad上显示,但在浏览器中显示

来自分类Dev

如何在没有滚动条的情况下滚动Div?

来自分类Dev

如何通过浏览器通过键盘在没有滚轮的情况下进行缩放?

来自分类Dev

可以显示滚动条,以使内容溢出左侧的浏览器窗口吗?

来自分类Dev

如何在不使浏览器崩溃的情况下显示未知长度的嵌套数组?

来自分类Dev

获取浏览器窗口宽度,包括滚动条

来自分类Dev

Angularstrap Modal隐藏垂直浏览器滚动条

来自分类Dev

浏览器垂直滚动条的高度限制

来自分类Dev

找不到浏览器滚动条?

来自分类Dev

隐藏网络浏览器滚动条

来自分类Dev

单击浏览器滚动条关闭弹出窗口

来自分类Dev

用按钮替换浏览器滚动条

来自分类Dev

自定义滚动条跨浏览器

来自分类Dev

在禁用滚动条的情况下获取RichTextBox中的滚动条“位置”

来自分类Dev

如何获取JavaScript中的浏览器滚动条高度

来自分类Dev

CSS:如何获取浏览器滚动条的宽度?(对于:hover {overflow:auto}不错的利润)

Related 相关文章

  1. 1

    如何在不删除选择框滚动条的情况下删除浏览器滚动条

  2. 2

    如何在不删除选择框滚动条的情况下删除浏览器滚动条

  3. 3

    如何在不破坏功能的情况下隐藏跨浏览器的滚动条

  4. 4

    是否可以在不拉伸或不显示滚动条的情况下使我的幻灯片中的所有图像全尺寸

  5. 5

    如何在不显示垂直滚动条的情况下显示标题?

  6. 6

    如何使固定的div覆盖浏览器的滚动条?

  7. 7

    如何使浏览器滚动条静态

  8. 8

    如何使浏览器滚动条静态

  9. 9

    引导如何在减小浏览器大小时显示滚动条

  10. 10

    如何获得Tkinter在没有滚动条的情况下显示非常大的图像?

  11. 11

    没有滚动条尺寸的情况下如何获得内部窗口的高度?(不能通过clientHeight)

  12. 12

    为什么Chrome浏览器从不显示更新说明,以及在可能的情况下如何查看说明

  13. 13

    如何在不使用jQuery或javascript更改浏览器设置的情况下保留cookie?

  14. 14

    fancybox滚动条未在iPad上显示,但在浏览器中显示

  15. 15

    如何在没有滚动条的情况下滚动Div?

  16. 16

    如何通过浏览器通过键盘在没有滚轮的情况下进行缩放?

  17. 17

    可以显示滚动条,以使内容溢出左侧的浏览器窗口吗?

  18. 18

    如何在不使浏览器崩溃的情况下显示未知长度的嵌套数组?

  19. 19

    获取浏览器窗口宽度,包括滚动条

  20. 20

    Angularstrap Modal隐藏垂直浏览器滚动条

  21. 21

    浏览器垂直滚动条的高度限制

  22. 22

    找不到浏览器滚动条?

  23. 23

    隐藏网络浏览器滚动条

  24. 24

    单击浏览器滚动条关闭弹出窗口

  25. 25

    用按钮替换浏览器滚动条

  26. 26

    自定义滚动条跨浏览器

  27. 27

    在禁用滚动条的情况下获取RichTextBox中的滚动条“位置”

  28. 28

    如何获取JavaScript中的浏览器滚动条高度

  29. 29

    CSS:如何获取浏览器滚动条的宽度?(对于:hover {overflow:auto}不错的利润)

热门标签

归档