Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Реализовать появление изображения на фоне пункта меню

#html #css #background


Как можно реализовать появление картинки на фоне пункта меню?
 Как на скрине.



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

Мой html код:




Мой css код:

.menu {
    padding:0;
    margin:0;
    display:block;
}

.menu li {
    font-family: 'Mensch-Regular';
    float:left;
    display:block;
    width:100%;
    text-align:center;
    font-size:24px;
    margin-top:32px;
}

.menu a {
    margin:20px;
    color:#4d4d4d;
    text-decoration:none;
}

    


Ответы

Ответ 1



Вроде не сложно , в два псевдоэлемента * { margin: ; padding: ; list-style: none; text-decoration: none; } html, body { font-family: "Times New Roman", sans-serif; font-size: 1.3em; } ul { display: flex; } li { margin-left: 10px; position: relative; z-index: 100; } li:hover:after { content: ""; display: inline-block; width: 100%; height: 50%; position: absolute; top: 5px; left: -10px; z-index: -1; border-top: 20px solid red; border-left: 10px solid transparent; border-right: 10px solid transparent; height: 0; } li:hover:before { content: ""; display: inline-block; width: 100%; height: 50%; position: absolute; top: 10px; left: -10px; z-index: -1; border-bottom: 20px solid red; border-left: 10px solid transparent; border-right: 10px solid transparent; height: 0; } https://codepen.io/topicstarter/pen/geabdb?editors=1100 с изменением цвета ссылки

Ответ 2



Предлагаю воспользоваться вам псевдоэлементами: .menu { display: flex; align-items: center; padding: 0; margin: 0; margin-top: 32px; background-color: #ECE8D4; } .menu li { display: flex; align-items: center; font-family: 'Mensch-Regular'; width: 100%; text-align: center; font-size: 24px; } .menu a { position: relative; padding: 20px; color: #4d4d4d; text-decoration: none; } .menu a::before, .menu a::after { content: ''; position: absolute; top: 0; opacity: 0; width: 0; height: 0; border-top: 34px solid transparent; border-bottom: 34px solid transparent; } .menu a::before { left: 0; border-left: 10px solid #ECE8D4; } .menu a::after { right: 0; border-right: 10px solid #ECE8D4; } .menu a:hover { background-color: #FF7752; color: #fff; } .menu a:hover::before, .menu a:hover::after { opacity: 1; }

Ответ 3



Предлагаю менять фон при наведении используя картинку для точной передачи дизайна .menu-list { display: flex; justify-content: center; margin: 0; padding: 10px 0; background: #f5d98b; list-style: none; li { padding: 15px 25px; margin: 0 20px; text-align: center; position: relative; background: none; &:hover { background-image:url("путь к картинке"); } a { text-decoration: none; font-size: 20px; color: #000; text-transform: uppercase; position: relative; z-index: 2; } } }

Комментариев нет:

Отправить комментарий