【问题标题】:GWT CustomScrollPanel exampleGWT CustomScrollPanel 示例
【发布时间】:2012-06-13 17:22:03
【问题描述】:

我发现了 GWT 的 CustomScrollPanel 以及如何自定义滚动条,但我找不到任何示例或如何设置它。是否有任何示例显示正在使用的自定义滚动条?

【问题讨论】:

    标签: gwt scrollbar


    【解决方案1】:

    这是您自定义本机滚动条的方式,但是您也可以开发自己的滚动条类来实现可定制性更高的 VerticalScrollbar 和 Horizo​​ntalScrollbar。

    资源(风格)定义:

    public class ScrollResourcesContainer {
    
        public interface ScrollPanelResources extends CustomScrollPanel.Resources
        {
            @Override
            @Source( { "ScrollPanel.css", CustomScrollPanel.Style.DEFAULT_CSS } )
            CustomScrollPanel.Style customScrollPanelStyle();
        }
    
        public interface HorizontalResources extends NativeHorizontalScrollbar.Resources
        {
            @Override
            @Source( { "HorizontalScrollbar.css", NativeHorizontalScrollbar.StyleTransparant.DEFAULT_CSS } )
            NativeHorizontalScrollbar.Style nativeHorizontalScrollbarStyle();
        }
    
        public interface VerticalResources extends NativeVerticalScrollbar.Resources
        {
            @Override
            @Source( { "VerticalScrollbar.css", NativeVerticalScrollbar.StyleTransparant.DEFAULT_CSS } )
            NativeVerticalScrollbar.Style nativeVerticalScrollbarStyle();
        }
    }
    

    通过CustomScrollPanel使用:

        CustomScrollPanel csp = new CustomScrollPanel((ScrollResourcesContainer.ScrollPanelResources) GWT.create(ScrollResourcesContainer.ScrollPanelResources.class));
        csp.setHorizontalScrollbar(new NativeHorizontalScrollbar((HorizontalResources) GWT.create(HorizontalResources.class)),
        AbstractNativeScrollbar.getNativeScrollbarHeight());
        csp.setVerticalScrollbar(new NativeVerticalScrollbar((VerticalResources) GWT.create(VerticalResources.class)),
        AbstractNativeScrollbar.getNativeScrollbarWidth());
    

    【讨论】:

    • css 文件是否允许自定义?你能提供一个 VerticalScrollbar.css 的示例吗?
    • 是的,但您无能为力,因为它们使用的是本机滚动条,如果您需要大量自定义,您可能需要创建一个完全自定义的 DOM 实现。例如,您应该通过解压缩 gwt-user.jar 并在 com\google\gwt\user\client\ui 中查看 AbstractNativeScrollbar.java 和 NativeVerticalScrollbar.java NativeVerticalScrollbar.ui.xml 和 NativeVerticalScrollbarTransparent.css 来查看 GWT 源代码。跨度>
    【解决方案2】:

    要在 gwt 中获得垂直滚动条的光滑滚动条,您需要在 VerticalScrollbar.css 中添加以下代码。 就像 gmail 一样,它不适用于 IE。

    /* Turn on a 16x16 scrollbar */
    ::-webkit-scrollbar {
        width: 16px;
        height: 16px;
    }
    
    /* Turn on single button up on top, and down on bottom */
    ::-webkit-scrollbar-button:start:decrement,
    ::-webkit-scrollbar-button:end:increment {
        display: block;
    }
    
    /* Turn off the down area up on top, and up area on bottom */
    ::-webkit-scrollbar-button:vertical:start:increment,
    ::-webkit-scrollbar-button:vertical:end:decrement {
        display: none;
    }
    
    /* Place The scroll down button at the bottom */
    ::-webkit-scrollbar-button:end:increment {
        background-image: url(images/scroll_cntrl_dwn.png);
    }
    
    /* Place The scroll up button at the up */
    ::-webkit-scrollbar-button:start:decrement {
        background-image: url(images/scroll_cntrl_up.png);
    }
    
    /* Top area above thumb and below up button */
    ::-webkit-scrollbar-track-piece:vertical:start {
        background-image: url(images/scroll_gutter_top.png), url(images/scroll_gutter_mid.png);
        background-repeat: no-repeat, repeat-y;
    }
    
    /* Bottom area below thumb and down button */
    ::-webkit-scrollbar-track-piece:vertical:end {
        background-image: url(images/scroll_gutter_btm.png), url(images/scroll_gutter_mid.png);
        background-repeat: no-repeat, repeat-y;
        background-position: bottom left, 0 0;
    }
    
    /* The thumb itself */
    ::-webkit-scrollbar-thumb:vertical {
        height: 56px;
        -webkit-border-image: url(images/scroll_thumb.png) 8 0 8 0 stretch stretch;
        border-width: 8 0 8 0;
    }
    

    【讨论】:

    • 类似地,您也可以对水平滚动条执行此操作。请查看以下链接了解更多详情。 almaer.com/blog/…
    • 感谢 VerticalScrollbar.css,这真的很有帮助。你有一个示例 Horizo​​ntalScrollbar.css 吗?
    【解决方案3】:

    如果有人对垂直/水平的 CSS 感兴趣,这就是我正在使用的。

    Horizo​​ntalScrollbar.css

    /* ***********
     * SCROLLBAR *
     * ***********/
    .nativeHorizontalScrollbar::-webkit-scrollbar
    {
        width: 10px;
        height: 10px;
    }
    
    /* *************
     * BUTTON AREA *
     * *************/
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal
    {
        background-color: transparent;
    }
    
    /* Increment scroll left/right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:start:decrement,
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:end:increment
    {
        display: block;
    
        width: 10px;
        height: 8px;
    
        background-repeat: no-repeat;
        background-size: 10px 8px;
    }
    
    /* Increment scroll left button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:start:decrement
    {
        background-image: url('images/scroll-left.png');
    }
    
    /* Increment scroll right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:end:increment
    {
        background-image: url('images/scroll-right.png');
    }
    
    /* Jump left/right buttons. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal:start:increment,
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal:end:decrement
    {
        display: none;
    }
    
    /* ******************
     * TRACKING SECTION *
     * ******************/
    .nativeHorizontalScrollbar::-webkit-scrollbar-track:horizontal
    {
        background-color: transparent;
    }
    
    /* Area between the thumb and the left button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece:horizontal:start
    {
    
    }
    
    /* Area between the thumb and and right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece:horizontal:end
    {
    
    }
    
    /* 
     * The tracking area.
     * This is the area that the thumb travels along.
     */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece
    {
        background-color: rgba(255, 255, 255, 0.1);
    }
    
    /* The tracking piece. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-thumb:horizontal
    {
        height: 15px;
    
        background-color: rgba(255, 255, 255, 0.75);
    
        border: none;
        -webkit-border-top-left-radius: 6px;
        -webkit-border-top-right-radius: 6px;
        -webkit-border-bottom-left-radius: 6px;
        -webkit-border-bottom-right-radius: 6px;
        -moz-border-radius-topleft: 6px;
        -moz-border-radius-topright: 6px;
        -moz-border-radius-bottomleft: 6px;
        -moz-border-radius-bottomright: 6px;
        border-top-left-radius: 6px;
        border-top-right-radius: 6px;
        border-bottom-left-radius: 6px;
        border-bottom-right-radius: 6px;
    }
    
    /* ********
     * CORNER *
     * ********/
    .nativeHorizontalScrollbar::-webkit-scrollbar-corner:horizontal
    {
        background-color: transparent;
    }
    
    /* *********
     * RESIZER *
     * *********/
    .nativeHorizontalScrollbar::-webkit-scrollbar-resizer:horizontal
    {
        background-color: transparent;
    }
    

    VerticalScrollbar.css /** *********** * 滚动条 * * ***********/

    .nativeVerticalScrollbar::-webkit-scrollbar
    {
        width: 10px;
        height: 10px;
    }
    
    /* *************
     * BUTTON AREA *
     * *************/
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical
    {
        background-color: transparent;
    }
    
    /* Increment scroll up/down buttons. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:start:decrement,
    .nativeVerticalScrollbar::-webkit-scrollbar-button:end:increment
    {
        display: block;
    
        width: 10px;
        height: 8px;
    
        background-repeat: no-repeat;
        background-size: 10px 8px;
    }
    
    /* Increment scroll up button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:start:decrement
    {
        background-image: url('images/scroll-up.png');
    }
    
    /* Increment scroll down button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:end:increment
    {
        background-image: url('images/scroll-down.png');
    }
    
    /* Jump up/down buttons. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical:start:increment,
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical:end:decrement
    {
        display: none;
    }
    
    /* ******************
     * TRACKING SECTION *
     * ******************/
    .nativeVerticalScrollbar::-webkit-scrollbar-track:vertical
    {
        background-color: transparent;
    }
    
    /* Area between the thumb and the up button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece:vertical:start
    {
    
    }
    
    /* Area between the thumb and and down button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece:vertical:end
    {
    
    }
    
    /* 
     * The tracking area.
     * This is the area that the thumb travels along.
     */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece
    {
        background-color: rgba(255, 255, 255, 0.1);
    }
    
    /* The tracking piece. */
    .nativeVerticalScrollbar::-webkit-scrollbar-thumb:vertical
    {
        height: 15px;
    
        background-color: rgba(255, 255, 255, 0.75);
    
        border: none;
        -webkit-border-top-left-radius: 6px;
        -webkit-border-top-right-radius: 6px;
        -webkit-border-bottom-left-radius: 6px;
        -webkit-border-bottom-right-radius: 6px;
        -moz-border-radius-topleft: 6px;
        -moz-border-radius-topright: 6px;
        -moz-border-radius-bottomleft: 6px;
        -moz-border-radius-bottomright: 6px;
        border-top-left-radius: 6px;
        border-top-right-radius: 6px;
        border-bottom-left-radius: 6px;
        border-bottom-right-radius: 6px;
    }
    
    /* ********
     * CORNER *
     * ********/
    .nativeVerticalScrollbar::-webkit-scrollbar-corner:vertical
    {
        background-color: transparent;
    }
    
    /* *********
     * RESIZER *
     * *********/
    .nativeVerticalScrollbar::-webkit-scrollbar-resizer:vertical
    {
        background-color: transparent;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2011-01-12
      相关资源
      最近更新 更多