можно скрыть определенный символ в медиа-запросах? - PullRequest
1 голос
/ 12 марта 2012

Мне интересно, могу ли я просто скрыть символы pipe (например: |) в моих медиазапросах в определенном окне просмотра?

I 'Мне интересно, потому что у меня есть меню, которое использует их в качестве разделителей, но очень плохо рендерится в мобильных видовых экранах, поэтому я бы LOVE смог бы просто их спрятать.Возможно, мне придется использовать jQuery с моим определенным CSS в мобильном окне просмотра?

Есть предложения?

Обновление 10:38 AM: * 10101 * Спасибо за отличные ответы, ребята;Я попытался предложить добавить класс к тегу span, и теперь мои каналы не отображаются поперек, ниже находится разметка в моем footer.php и соответствующее скрытие в медиа Q.

<li class="f"><a href="#" class="scrolltime">EXPLORE</a> <span class="pipe"> | </span></li>

<li class="f"><a href="#" class="scrolltime"> FOR</a><span class="pipe"> | </span></li>

<li class="f"><a href="#" class="scrolltime">ENHANCED</a><span class="pipe"> | </span> </li>

<li class="f"><a href="/iframe/buybutton.html" class="fancybox-iframe" style="color:#C6C699;">Iframe</a></li>
</ul>

CSS3:

/* Smartphones (Landscape) ----------- */
@media only screen and (min-width: 320px) and (max-width: 480px) {


#topvidarea {
    margin-left: 24%;
    margin-right: 20%;
    margin-top: -265px;
    max-width: 400px;
}

#topbgimg { display: none; }

#topbtn, #topbtn2, #topbtn3 {
    border: 0 solid #C6C699;
    display: inline;
    float: left;
    font-family: Georgia;
    margin-right: 5px;
    text-align: center;
    width: 122px;
}


#topvidarea {
    margin-left: 24%;
    margin-right: 20%;
    margin-top: 15px;
    max-width: 400px;
}

#footer a {
    font-size: 8px;
    margin: 0;
    padding: 12px;
    text-indent: 1px;
}

.f {
    float: none;
    margin-top: -2px;
    padding-left: 0;
}

.pipe { display: none; }

}

Ответы [ 3 ]

5 голосов
/ 12 марта 2012

Основная проблема заключается в том, что вы используете контент (символы канала) для презентации (декорирования).Избежать этого - одна из основных причин использования CSS.Представьте себе человека с нарушениями зрения, который использует ваш сайт.Как их программа чтения с экрана должна произносить "|"?Если вы не уверены, скорее всего, его следует перенести с уровня содержимого (HTML) на уровень представления (CSS).(На самом деле программы чтения с экрана достаточно умны, чтобы избежать этой распространенной ошибки, но это все же полезное умственное упражнение.)

Вы можете, как предполагает @ChrisN, использовать border-right или -left, но другой вариант -используйте селектор :after.Например, вместо этого:

<nav>
  <ul>
    <li>Foo</li> |
    <li>Bar</li> |
    <li>Baz</li>
  </ul>
</nav>

Удалите каналы из вашего контента:

<nav>
  <ul>
    <li>Foo</li>
    <li>Bar</li>
    <li>Baz</li>
  </ul>
</nav>

И затем используйте селектор :after в вашем уровне представления (CSS) для размещения каналовмежду ними:

@media ... {
  nav li:after {
    content: "|";
  }

  /* no "|" after the last one, though */
  nav li:last-child:after {
    content: normal;
  }
}

Конечно, вы можете использовать свойства padding, чтобы поместить желаемое количество места вокруг "|".

Этот подход позволяет избежать утяжеления вашей страницы с дополнительнымиразметка, а также дает вам больше гибкости, чем, например, border-right, поскольку вы можете использовать изображение, или несколько символов или символов, или некоторую комбинацию, вместо простой линии.

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

Лучше всего было бы изменить ваши трубы на border-right s (или border-left s) и добавить интервал, чтобы они выглядели как трубы, или (не рекомендуется) переносить символы трубы в <span> s илиподобное, аналогичное, похожее.Тогда вы можете скрыть их по своему желанию.

Но нет, вы не можете просто скрыть символы таким образом с помощью CSS.

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

Не думаю, что вы можете специально скрывать подобные символы, но вы могли бы что-то вроде этого (очень упрощенный пример ..)

<span class="noshow> | </span> Home <span class="noshow> | </span About 

Тогда в вашем медиа-запросе укажите его

.noshow { display: none }

Это неопрятно, но работает.

...