Градиент списка (два цвета фона?) - PullRequest
0 голосов
/ 24 августа 2010

В настоящее время на моем сайте я использую фоновое изображение с точной высотой, чтобы текст (который также является точной высотой) помещался на каждой «строке» в фоновом изображении - к сожалению, это не работаетслишком хорошо.Всякий раз, когда японские символы присутствуют в списке, он «ударяет» по строке, поэтому фоновое изображение переходит на новую «линию» и показывает около 3 пикселей другого цвета на изображении.Интересно, есть ли более простой и "правильный" способ сделать это?

Вот текущий CSS:

div.list{
background-image:url('static/div.png');
margin:25px -25px 5px -25px; /* Just for some space around the list and some removement of the content-padding I have on the site */
}

div.listCaption{
color:#F57F37;
background-color:#D9D9D9; /* So that the listcaption doesn't look like a list-item */
margin-left:-25px; /* This just removes some of the content-padding I have on the site */
padding-left:25px; /* Makes the background for the caption gray */
padding-top:16px; /* Since I have a PHP loop within the list div, I have to make some space between the two lists I have to make it look better */
}

Ответы [ 3 ]

0 голосов
/ 24 августа 2010

Один простой вариант - отключить повторение по вертикали на фоновом изображении и установить цвет фона элемента списка таким же, как цвет нижнего края вашего изображения. Тогда вы можете настроить свой CSS так:

div.list {
    background: url("static/div.png") repeat-x left top #fff; /* example color */
    margin:25px -25px 5px -25px;
}

Вы также можете сделать свое фоновое изображение выше, чтобы вы могли расширить свой градиент, чтобы избежать большой сплошной полосы внизу элементов списка, когда их высота вынуждена увеличиваться.


РЕДАКТИРОВАТЬ: PNG в вашем комментарии немного проясняется.

Я не совсем уверен, как у вас настроен HTML, но вы могли бы упростить все это, используя упорядоченный список и чистый CSS.

<h3>Latest Submissions</h3> <!-- or whatever your title element is -->
<ul>
    <li>Lorem Ipsum</li>
    <li class="stripe">Lorem Ipsum</li>
    <li>Lorem Ipsum</li>
    <li class="stripe">Lorem Ipsum</li>
</ul>

Тогда вы можете использовать стили по следующим направлениям:

li {
    display: block;
    background: #999;
    padding: 3px;
}

.stripe {
    background: #ddd;
}

Добавьте класс strip к каждому другому элементу списка, используя ваш PHP-скрипт. Это делает каждый элемент списка блок-элементом и применяет другой фон, если он является одной из stripe строк. Любой дополнительный контент в элементе списка просто заставит его расширяться по вертикали, отталкивая следующий, но цвета фона останутся с правильными элементами.


РЕДАКТИРОВАТЬ 2: Вывод списка в PHP

Предположим, что у вас есть массив значений, через который вы перебираете, который называется $myarray. Мы можем перебрать этот массив и применить класс stripe даже к элементам списка:

for($i = 0; $i < len($myarray); i++) {
    $output = "<li";

    if($i % 2 == 0) {
        $output .= ' class="stripe"'
    }

    $output .= ">" . $myarray[$i] . "</li>";
}

Убедитесь, что этот вывод содержится в ul, поэтому вам нужно сделать что-то вроде этого:

<ul>
    <?php //Put your loop here ?>
</ul>
0 голосов
/ 24 августа 2010

Просто чтобы завершить: почти все современные браузеры (что на удивление даже IE6) поддерживают CSS-градиенты фона.

http://www.webdesignerwall.com/tutorials/cross-browser-css-gradient/

0 голосов
/ 24 августа 2010

В вашем случае есть простое решение (3px - маленькая высота):
в вашем css:

  • добавьте 'repeat-x', чтобы фон не былповторять по вертикали при изменении размера текста

  • добавить свойство 'background color', равное одному из ваших цветов градиента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...