Jump to content
  • 0

При наведение изменить фон


qazibum
 Share

Question

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

Вот рисунок

8ef4dcf2b270.jpg

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

Как сделать, чтобы фон подставлялся правильно? Без js, желлательно только css.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

так подставьте уголок картинкой в псевдоэлемент. Это классическое решение.

Уголок должен меняться в зависимости от состояния пункта меню. Видите на рисунке, в первом посте, он разный.

Link to comment
Share on other sites

  • 0

так подставьте уголок картинкой в псевдоэлемент. Это классическое решение.

Уголок должен меняться в зависимости от состояния пункта меню. Видите на рисунке, в первом посте, он разный.

А в чём проблема по состоянию менять фон у псевдика?

  • Like 1
Link to comment
Share on other sites

  • 0

так подставьте уголок картинкой в псевдоэлемент. Это классическое решение.

Уголок должен меняться в зависимости от состояния пункта меню. Видите на рисунке, в первом посте, он разный.

А в чём проблема по состоянию менять фон у псевдика?

Да вроде ни в чем. Только у меня не получается задать свойства только для первого и второго элемента списка. Всего элементов пять, а уголок только на первом и втором.

li+li+li:after{content:none;} - не работает. Точнее работает, но одновременно и li:after{content:url(ugol.png) работает.

Link to comment
Share on other sites

  • 0

если бефору задать позишн:абсолют, то вести себя он будет совершенно одинаково

position:absolute;display:block; примененный к бефору, улучшили ситуацию. Сейчас при наведение картинки прыгают, когда бефорам или афтером добавляются боковые.

Edited by qazibum
Link to comment
Share on other sites

  • 0

а посмотреть-то на эти чудеса можно?

На локалке.

Короче, поговорка "утро вечера мудренее" работает. Но что мудрости не до конца хватило :)

Получился такой код, не весь, самый важный


ul.menu li.active:after{
content:url(../images/after.png);
}
ul.menu li:hover:after{
content:url(../images/after.png);
}
ul.menu li.active:hover:after{
content:url(../images/after.png);
}

ul.menu li+li.active:before{
content:url(../images/before.png);
position:absolute;display:block;
}
ul.menu li+li:hover:before{
content:url(../images/before.png);
position:absolute;display:block;
}
ul.menu li.active+li:hover:before{
content:url(../images/before2.png);
position:absolute;display:block;
margin:0 0 0 -14px;
}

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

ul.menu li:hover:after{
content:url(../images/after.png);
}

смещает вторую кнопку и между ними образуется косая полоска другого цвета. Это нормально при условии, что вторая кнопка не активна.

Т.е. надо прописать условие для первой кнопке, когда вторая активна. Вот как это сделать в css?

Прописать условие для второй кнопке, когда активна первая - нет проблем

ul.menu li.active+li:hover:before

А для первой, когда активна вторая?

Сделал гифку

EbVhWl2n.gif

Edited by qazibum
Link to comment
Share on other sites

  • 0

ну во-первых, если уж добивать эту тему, то position: absolute надо всем уголкам.

а во-вторых, в вашем случае проще сделать всё картинками, а наложить кнопки друг на друга небольшим отрицательным маргином.

Если заморачиваться жёстко, то можно сделать меню без углов, а затем канвасом перерисовать его, тогда и граница между кнопками будет вполне наклонной, и можно будет текстурами заливать получившиеся фигуры. При этом можно будет текст кнопок править из cms.

Можно и с <map> заморочиться (у меня лично интуитивное неприятие этой темы, но это ещё ничего не значит).

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy