Как сказал BoltClock, просто сделать это невозможно с помощью CSS.Тем не менее, это можно сделать, если вы готовы использовать Javascript.По сути, вы хотите стилизовать любой переполненный элемент, у которого scrollHeight
больше, чем clientHeight
.Вот простой пример, который запускает скрипт при загрузке страницы и добавляет «переполненный» класс к элементам, имеющим полосы прокрутки:
<html><head><title>Overflow styling example</title>
<style type="text/css">
div.outerdiv
{
width: 100px;
height: 100px;
overflow-y: auto;
float: left;
margin: 20px;
border: 1px solid black;
}
div.outerdiv.overflowed
{
background-color: #9999FF
}
</style>
<script type="text/javascript">
function crossBrowserEventAttach(objectRef, eventName, functionRef)
{
try {
objectRef.addEventListener(eventName, functionRef, false);
}
catch(err) {
try {
objectRef.attachEvent("on" + eventName, functionRef);
}
catch(err2) {
// event attachment failed
}
}
}
function overflowCheck(element) {
if (element.scrollHeight > element.clientHeight && element.className.indexOf("overflowed") < 0) {
element.className = element.className + " overflowed";
}
else if (element.className.indexOf("overflowed") >= 0) {
element.className = element.className.replace(" overflowed", "");
}
}
function checkPage() {
var elements = document.getElementsByTagName("div");
for (var i = 0; i < elements.length; i++) {
if (elements[i].className.indexOf("outerdiv") >= 0) {
overflowCheck(elements[i]);
}
}
}
crossBrowserEventAttach(window, "load", checkPage);
</script>
</head>
<body>
<div class="outerdiv">
Line 1<br />Line 2
</div>
<div class="outerdiv">
Line 1<br />Line 2<br />Line 3<br />Line 4<br />Line 5<br />Line 6<br />Line 7<br />Line 8<br />Line 9<br />Line 10<br />Line 11<br />Line 12<br />
</div>
<div class="outerdiv">
Line 1<br />Line 2<br />Line 3<br />
</div>
<div class="outerdiv">
Line 1<br />Line 2<br />Line 3<br />Line 4<br />Line 5<br />Line 6<br />Line 7<br />Line 8<br />Line 9<br />Line 10<br />Line 11<br />Line 12<br />
</div>
</body>
</html>
Если вы запустите это в своем браузере, div с содержимым достаточно высокимчтобы дать им полосы прокрутки должны быть синего цвета, а полосы без полос прокрутки должны быть белого цвета:
http://i51.tinypic.com/2zf96de.png
Обратите внимание, что если вы используете эту технику со страницей, которая изменяет DOM или имеет другое содержимоекоторый изменяется после загрузки, вам нужно написать дополнительные обработчики событий для повторной проверки элементов после изменения их содержимого.