如何使用内部阴影和滚动条正确设置文本区域的样式
我使用以下 CSS 在所有控件、输入和文本区域上放置内部阴影:
input {
padding: 7px;
-webkit-box-shadow: inset 2px 2px 2px 0px #dddddd;
-moz-box-shadow: inset 2px 2px 2px 0px #dddddd;
box-shadow: inset 2px 2px 2px 0px #dddddd;
}
并且使用其他一些样式,看起来像这样(在 Firefox 中,在其他浏览器中类似):
但是有助于将内容与内部阴影分开的填充会破坏滚动条周围的文本区域:
如果我删除填充,文本会与阴影重叠,如下所示:
我可以仅在左侧添加填充,解决与左侧阴影的重叠问题,但不解决与顶部阴影的重叠问题,同时使滚动条看起来不错:
<图片src="https://i.sstatic.net/ke42O.png" alt="在此处输入图像描述">
我还可以在除右侧之外的所有位置添加填充,使文本显示正确,但工具栏看起来仍然相当奇怪:
有什么方法可以解决这个问题吗?
I'm putting an inner-shadow on all my controls, inputs and textareas by using the following CSS:
input {
padding: 7px;
-webkit-box-shadow: inset 2px 2px 2px 0px #dddddd;
-moz-box-shadow: inset 2px 2px 2px 0px #dddddd;
box-shadow: inset 2px 2px 2px 0px #dddddd;
}
and, with some other styling, looks like this (in Firefox, and similar in other browsers):
But the padding that helps separate the content from the inner shadow breaks the textarea around the scrollbar:
and if I remove the padding, the text overlaps the shadow, like this:
I can add padding only to the left, solving the overlap with the left shadow but not with the top shadow, while having the scrollbar look good:
I can also add padding everywhere but on the right side, having the text displayed correctly but the toolbar still looks rather odd:
Is there any way to solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用标准 textarea 元素不可能使
padding
属性仅影响内容而不影响滚动条。为此,您可以使用contenteditable
DIV。例如,检查这个小提琴: http://jsfiddle.net/AQjN7/HTML:
CSS:
Getting the
padding
property to affect only the content but not the scrollbar is not possible using standard textarea elements. For that you can use acontenteditable
DIV. For example, check this fiddle: http://jsfiddle.net/AQjN7/HTML:
CSS:
您只需将:
padding-right: 0;
添加到文本区域选择器,它就会将滚动条与元素的侧面对齐。 :)You can just add:
padding-right: 0;
to the textarea selector and it will line up your scrollbar with the side of the element. :)您可以将文本区域包装在 div 中:
css:
A jsFiddle here: http://jsfiddle.net/rXpPy/
You could wrap the textarea in a div:
css:
A jsFiddle here: http://jsfiddle.net/rXpPy/
此外,您可以使用专门针对文本输入的方式,而不是使用简单的输入(以按钮为目标)
Additionally - rather than using simply input, which will target buttons, you can target text inputs specifically with