2011-09-08 44 views
44

是否可以指定垂直滚动条在div上的位置(左侧或右侧)?如何在左侧放置div滚动条?

例如查看this page,它解释了如何使用溢出属性。有什么方法将滚动条放置在可滚动区域的左侧?

+2

[左侧的HTML元素滚动条]可能的重复(http://stackoverflow.com/questions/2772347/html-element-scrollbar-on-the-left) – peirix

+2

为了将来的参考,请不要使用http: //w3schools.com作为您的信息来源,其中一些信息存在误导和错误。见http://w3fools.com –

+0

看看这个线程。显示一些限制,这恐怕。 http://stackoverflow.com/questions/5123417/css3-how-do-i-position-a-left-scrollbar-on-a-tbody-element-of-a-table-for-google –

回答

6

不,您无法更改滚动条的位置,而无任何其他问题。

您可以将文本方向更改为从右到左(rtl),但它也会更改块内的文本位置。

此代码可以帮助您,但我不确定它适用于所有浏览器和操作系统。

<element style="direction: rtl; text-align: left;" /> 
+0

我认为IE和Opera是唯一将滚动条放在左侧的RTL内容的浏览器。 – Joey

54

您可以在您的CSS中尝试direction:rtl;。然后在内部重置文本方向div

#scroll{ 
    direction:rtl; 
    overflow:auto; 
    height:50px; 
    width:50px;} 

#scroll div{ 
    direction:ltr; 
} 

未经测试。

+2

我认为IE和Opera是唯一将滚动条放在RTL内容左侧的浏览器。 – Joey

+2

@Joey在ubuntu下也不正确chrome – Tom

+0

我想确认Chrome 32在左边的位置。在这一点上,它并不意外,Firefox是一个落后的css –

25

我有同样的问题。但是当我在标签和手风琴组合中添加direction: rtl;时,它会崩溃我的结构。

要做到这一点的方法是将div加direction: rtl;作为父元素,对于子div集direction: ltr;

我用这首https://api.jquery.com/wrap/

$(".your selector of child element").wrap("<div class='scroll'></div>"); 

然后只是简单的用CSS :)

在孩子DIV添加到CSS

.your_class { 
      direction: ltr;  
     } 

以及由jQuery的添加类父DIV工作.scroll

.scroll { 
      unicode-bidi:bidi-override; 
      direction: rtl; 
      overflow: scroll; 
      overflow-x: hidden!important; 
     } 

工程知府我

http://jsfiddle.net/jw3jsz08/1/

+1

哈哈最好的答案,没有upvotes。 – 2014-04-15 04:12:19

+0

http://jsfiddle.net/jw3jsz08/1/简单而有效的任何浏览器。 – user1597594

+0

最佳解决方案,谢谢! – jonathana

0

这里是我做了什么做出正确的滚动条的作品。唯一需要考虑的是使用'方向:rtl'时,整个表也需要改变。希望这可以让你知道如何去做。

例子:

<table dir='rtl'><tr><td>Display Last</td><td>Display Second</td><td>Display First</td></table> 

检查:JSFiddle

5

一个老问题的种类,但我想我应该在这个时候有人问这是不是广泛使用的方法抛出。

您可以在现代浏览器中使用transform: scaleX(-1)在父代<div>上反转滚动条的一侧,然后应用相同的转换来反转子“袖”元素。

HTML

<div class="parent"> 
    <div class="sleeve"> 
    <!-- content --> 
    </div> 
</div> 

CSS

.parent { 
    overflow: auto; 
    transform: scaleX(-1); //Reflects the parent horizontally 
} 

.sleeve { 
    transform: scaleX(-1); //Flips the child back to normal 
} 

注意:您可能需要使用-ms-transform-webkit-transform前缀的浏览器一样古老的IE 9.检查CanIUse,然后单击 “显示所有” 看旧的浏览器要求。

+0

这是最优秀的解决方案之一。 – Miron

+0

谢谢!根据我的理解,改变文字方向也起作用。转换属性只是感觉更多...优雅?至少它在语义上更正确。 :) –

+2

我想你也可以从使用这种方法的一些GPU增强中受益。我在屏幕右侧的菜单中飞行,不希望菜单的滚动条在页面滚动条旁边......太混乱。使用这个动画比使用方向切换少了一些动画。 –

相关问题