CSS3 Позиционирование фонового изображения - PullRequest
0 голосов
/ 17 марта 2012

Я решил поиграть с CSS3 и столкнулся с некоторыми проблемами с фоновыми изображениями. Мои фоновые изображения (шестиугольник и стрелка) отображаются неправильно. Шестигранник не отображается в родительском элементе, и я не могу заставить стрелку двигаться вправо.

Я использую изображения границ, чтобы я мог изменять размеры элементов по горизонтали.

Любой совет?

Вот как это должно выглядеть -> Finished Navigation Example

Это шестиугольник -> Hexagon

Это Стрелка -> Arrow

Это фон элемента привязки -> Anchor Background

Это фон элемента элемента списка -> List Item Background

JS Fiddle

HTML

<nav>
    <ul>
        <li>
            <a href="">Examples</a>
        </li>
    </ul>
</nav>

CSS

nav {
    font-family: sans-serif;
    font-weight: 700;
    font-size: 24px
}
li {
    display: inline-block;
    height: 107px;
    border-width: 1px 32px 1px 32px;
    -moz-border-image: url('http://markschamel.com/graphics/themes/misc/nav.li.background.png') 1 32 1 32 stretch stretch;
    -webkit-border-image: url('http://markschamel.com/graphics/themes/misc/nav.li.background.png') 1 32 1 32 stretch stretch;
    -o-border-image: url('http://markschamel.com/graphics/themes/misc/nav.li.background.png') 1 32 1 32 stretch stretch;
    border-image: url('http://markschamel.com/graphics/themes/misc/nav.li.background.png') 1 32 1 32 stretch stretch;
}
a {
    display: inline-block;
    height: 45px;
    border-width: 1px 14px 1px 14px;
    -moz-border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    -webkit-border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    -o-border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    text-decoration: none;
    line-height: 45px;
    padding: 0 10px;
    margin: 31px 0 0 17px;
    background: url('http://markschamel.com/graphics/themes/misc/nav.hex.background.png') no-repeat -50px center,
    url('http://markschamel.com/graphics/themes/misc/nav.arrow.background.png') no-repeat right center;
    color: #d92701;
}

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Я отредактировал свой CSS.Взгляните на этот http://jsfiddle.net/8y6XL/1/

CSS

 nav {
    font-family: sans-serif;
    font-weight: 700;
    font-size: 24px
}
li {
    background: url("http://markschamel.com/graphics/themes/misc/nav.hex.background.png") no-repeat scroll 6px center, url("http://markschamel.com/graphics/themes/misc/nav.arrow.background.png") no-repeat scroll 223px center, url("http://markschamel.com/graphics/themes/misc/nav.li.background.png") no-repeat scroll left top transparent;
    border-width: 1px 32px;
    display: inline-block;
    height: 107px;
    text-align: center;
    width: 271px;
}
a {
    display: inline-block;
    height: 45px;
    border-width: 1px 14px 1px 14px;

    -webkit-border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    -o-border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    border-image: url('http://markschamel.com/graphics/themes/misc/nav.a.background.png') 1 14 1 14 stretch stretch;
    -moz-border-image: url("http://markschamel.com/graphics/themes/misc/nav.a.background.png") 1 14 1 14 stretch stretch;
    border-width: 1px 14px;
    color: #D92701;
    display: inline-block;
    height: 45px;
    line-height: 45px;
    margin: 31px 0 0 8px;
    padding: 0 10px;
    text-decoration: none;
    width: 138px;
}

, если вы хотите растянуть элемент li, то растяжение изображения будет грязным.В этом случае я предлагаю вам разделить изображение на 3 части.1. Левая часть, включая левый угол стрелки и шестигранник 2. Правая часть, включая маленькую стрелку и правую угловую часть 3.a 1px на 1px изображение плитки.

0 голосов
/ 21 марта 2012

JS Fiddle

Прочитав статью A List Apart о раздвижных дверях , я занялся решением этой проблемы. Я использовал предложение Абхидева разделить изображение на три части.

Это решение также позволяет уменьшить ширину каждого элемента списка (например, предоставить значение, отличное от auto, элементу anchor ).

CSS

nav {
    font-family: sans-serif;
    font-size: 24px;
    font-weight: 700;
}
nav ul {
    height: 107px;
}
nav li {
    display: inline-block;
    height: 107px;
    position: relative;
}
nav a {
    display: inline-block;
    color: #d92701;
    text-decoration: none;
    line-height: 4.5;
    overflow: hidden;
    height: 107px; width: auto;
    background: transparent url('nav.background.expand.middle.png') repeat-x left top;
    position: relative;
    top: 0;
    white-space:nowrap;
}
nav li:before {
    content: "";
    float: left;
    width: 64px;
    height: 107px;
    margin: 0;
    background: transparent url('nav.background.expand.begin.png') no-repeat left top;
}
nav li:after {
    content: "";
    float: right;
    width: 58px;
    height: 107px;
    margin: 0;
    background: transparent url('nav.background.expand.end.png') no-repeat right top;
}

HTML

<nav><ul><li><a href="">Hello World</a></li><li><a href="">Hello</a></li><li><a href="">Hello World Hello World</a></li></ul></nav>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...