CSS "прозрачный" фон - сумасшедшая проблема с меню навигации

У меня сумасшедшее меню навигации, которое мне нужно кодировать. Это довольно сложно. Смотрите скриншот дизайна здесь:

CSS "прозрачный" фон - сумасшедшая проблема с меню навигации

скриншот меню навигации

Как видите, фон у пункта меню "Домой" довольно жесткий! Я не могу понять, как сделать фон «прозрачным», то есть он прорезает темный фон и показывает узорчатый зеленый фон.

Вы знаете, как это сделать с помощью CSS?

Заранее спасибо.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
4
0
12 621
5

Ответы 5

Вы можете использовать:

background: transparent;
background: inherit;

Но вам необходимо структурировать свой HTML так, чтобы ссылки Дом, Журнал и т. д. Были встроены в поле с фоном.


Для закругленных углов Проверь это.

Или вы можете использовать изображения с фигурной прозрачностью в качестве фона.


@Gary [комментарий]: inherit берет первые настройки, которые находит, поднимаясь вверх по иерархии. Так что, если у вас есть средний уровень, вместо этого он подберет свои настройки.

Тогда вы можете попробовать использовать:

background-image: url('greencheckers'); /* outer */

background-color: black;                /* middle */

background-image: inherit;              /* link */

Теоретически тогда он должен искать первую настройку background-image. Но я никогда этим не пользовался, поэтому никаких гарантий.

Или фон: прозрачный; ?

strager 21.12.2008 11:14

Спасибо за ваше решение. Я попробую "фон: наследовать", чтобы посмотреть, работает ли он (с некоторой реструктуризацией, как вы предложили). Раньше я пробовал много способов, но головная боль заключается в том, как плавно смешивать фон пунктов меню с узорчатым фоном. Спасибо и за закругленные углы!

Gary Cao 21.12.2008 11:20

@ strager: Конечно, фон: прозрачный - это первое, что пришло мне в голову. Но я бы хотел, чтобы все было так просто. Дело в том, что меню навигации заключено в слой с цветом фона. Таким образом, использование прозрачности здесь не откроет под ним зеленый узорчатый фон.

Gary Cao 21.12.2008 11:20

Сообщите нам, сработало ли наследование. Любопытно посмотреть на результат.

Boris Callens 22.12.2008 19:10

Еще один интересный подход к прозрачным (или полупрозрачным) эффектам состоит в том, чтобы дать два раздела либо

1) то же фоновое изображение, или
2) похожие фоновые изображения, одно из которых изменено цветом, размытием или чем-то еще.

... и убедитесь, что их background-position такой же.

Это продемонстрировано в Демо Эрика Мейера "Комплексная спираль". (Вот другая версия, который он сделал.)

Разъяснение: это неспроста в разделе "Edge" Мейера - это не совместим с IE6. (Спасибо, Борис.)

Хотя действительно круто, эффект не будет работать в IE lt 7. Если вас это устраивает, то никаких проблем :)

Boris Callens 22.12.2008 19:09

Гэри не нужно применять эффекты к фоновой картинке. Может быть, он сможет заставить его работать и в IE6, используя тот же фон с разные (подходящим) background-position? Body будет использовать 0,0; Home будет использовать 100, 120, журнал 100, 200 и так далее.

buti-oxa 22.12.2008 19:58

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
<head>
    <title>CSS Tabbed Navigation</title>
    <meta http-equiv = "content-type" content = "text/html; charset=utf-8" />
    <style type = "text/css">
    body {
        margin: 20px;
        padding: 0px;
        background: #CACCB4;
        font: 16px arial, sans-serif; 
        background-image: url('http://www.graphicsarcade.com/backgrounds/strips/background_3.gif'); 
        }

    pre {text-indent: 30px}

    #tabmenu {
        color: #000;
        border-bottom: 2px solid black;
        margin: 12px 0px 0px 0px;
        padding: 0px;
        z-index: 1;
        padding-left: 10px }

    #tabmenu li {
        display: inline;
        overflow: hidden;
        list-style-type: none; }

    #tabmenu a, a.active {
        color: #DEDECF;
        background: #898B5E;
        font: bold 1em "Trebuchet MS", Arial, sans-serif;
        border: 2px solid black;
        padding: 2px 5px 0px 5px;
        margin: 0px;
        text-decoration: none; }

    #tabmenu a.active {
        background-image: url('http://www.graphicsarcade.com/backgrounds/strips/background_3.gif'); 
        background-position: -125px -18px;
        border-bottom: 3px solid #ABAD85; }

    #content {font: 0.9em/1.3em "bitstream vera sans", verdana, sans-serif;
        text-align: justify;
        background: #ABAD85;
        padding: 20px;
        border: 2px solid black;
        border-top: none;
        z-index: 2; }

    #content a {
        text-decoration: none;
        color: #E8E9BE; }

    #content a:hover { background: #898B5E; }
    </style>
</head>

<body>

<ul id = "tabmenu">
    <li><a href = "tab1.html">Enormous</a></li>
    <li><a class = "active" href = "tab2.html">Flared</a></li>
    <li><a href = "tab3.html">Nostrils</a></li>
</ul>

<div id = "content">
  <p>If one examines subpatriarchialist material theory, one is faced with a choice: either accept the presemioticist paradigm of reality or conclude that the task of the artist is deconstruction, given that reality is equal to art. It could be said that the subject is contextualised into a Batailleist 'powerful communication' that includes language as a totality. Marx uses the term 'precapitalist semiotic theory' to denote the bridge between narrativity and society.</p>
  <p>Any number of desituationisms concerning Sartreist absurdity may be discovered. In a sense, the textual paradigm of consensus states that reality has significance. Baudrillard uses the term 'surrealism' to denote the absurdity, and subsequent rubicon, of substructuralist class. It could be said that la Tournier[4] holds that the works of Pynchon are modernistic. The premise of the textual paradigm of consensus states that the significance of the observer is social comment. However, in Gravity's Rainbow, Pynchon examines textual materialism; in The Crying of Lot 49 he denies subcultural discourse.</p>
    <br />
</div>

</body>
</html>

Мне нравится, как ваш «быстрый» пример заботится даже о настройках шрифтов и т. д.: P Работал в Opera, но IE лажает (сюрприз!).

Boris Callens 23.12.2008 11:27

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

Создайте два очень длинных черных изображения: одно для правого с закругленным углом слева и одно для левого с углом справа и расположите их по обе стороны от текущего элемента. К сожалению, я не думаю, что простой CSS сможет это сделать, но похоже, что вы уже используете JS.

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

Я предлагаю сделать изображение 30 x 1 (высота x ширина), заполнить его черным и установить для него непрозрачность примерно 35% ... Сохранить как .png (несовместимо с браузерами <IE7)

Добавьте это изображение в свой класс CSS фона меню следующим образом:

#MainMenu {
    display: block;
    height: 30px;
    background; transparent url("menuBG.png") repeat-x;
}

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

http://www.logansarchive.za.net/preview.jpg

HTH

Другие вопросы по теме