Nano Hash - криптовалюты, майнинг, программирование

По умолчанию: цель с CSS

У меня есть этот CSS:

<style type="text/css">
.tab {
  display: none;
}
.tab:target {
  display: block;
}
</style>

И этот HTML:

<div class="tab_container">

  <ul class="tabs">
    <li><a href="#updates-list">List</a></li>
    <li><a href="#updates-map">Map</a></li>
  </ul>

  <ul class="tab list" id="updates-list">
    Eh.. Hello!
  </ul>
  <div class="tab map" id="updates-map"></div>
</div>

Однако моя страница пуста, если не указана цель (# в URL-адресе) и еще не нажата ни одна вкладка. Я хочу показать ul#updates-list по умолчанию.

Как я могу это сделать? Спасибо.


Обновление: рядом с этим моя карта Google не работает, если она не является начальной целью. Кто-нибудь знает исправление?

28.07.2010

  • Из спецификации CSS3: если URI документа не имеет идентификатора фрагмента , то в документе нет целевого элемента. Бу! 22.02.2012
  • Почему бу? Чему, как вы ожидаете, будет соответствовать :target, если нет идентификатора фрагмента? Корневой элемент? Каждый элемент (или каждый [id], a[name])? Или значение по умолчанию среди подмножества [id], a[name] в документе, на которое автор ожидает, основываясь на своих собственных намерениях, когда-либо ссылаться через идентификатор фрагмента, что-то, о чем ни CSS, ни даже DOM не могут знать. ? 30.03.2015

Ответы:


1

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

<script type="text/javascript">
  if (document.location.hash == "" || document.location.hash == "#")
    document.location.hash = "#updates-list";
</script>

ИЗМЕНИТЬ:

Хорошо, есть решение CSS. Однако для этого требуется, чтобы запись по умолчанию #updates-list была помещена последней (после #updates-map и любых других вкладок, которые вы можете добавить):

.tab, .tab:target ~ #updates-list  {
  display: none;
}
#updates-list, .tab:target {
  display: block;
}
28.07.2010
  • большое спасибо! но можете ли вы объяснить немного больше о том, как ваше решение css выбирает цель по умолчанию? что такое .tab? он не использовал .tab? должны быть .tabs? или же 03.03.2011
  • #updates-list используется по умолчанию, потому что это то, что я указываю в правиле #updates-list, .tab:target { ... }. .tab - это класс содержимого вкладок, а не самих вкладок - сравните мой CSS с CSS в вопросе. 03.03.2011
  • Хорошо, вторая строка говорит, что отображать класс по умолчанию в том же стиле, что и :target? и в первой строке говорится, что стиль класса по умолчанию такой же, как и не цель, если цель является родственной? но не будет ли вторая строка переопределять его в любом случае? я пытаюсь заставить его работать с этим примером из css-tricks.com/examples/CSSTabs - jsfiddle.net/ArHdb большое спасибо 05.03.2011
  • Что ж, мое решение выше основано на вкладках, которые отделены от их содержимого. Сначала вкладки, потом содержание. В вашем коде перепутаны вкладки и содержимое, поэтому его нельзя применить, и вам понадобится совершенно другое решение, над которым сейчас нет времени думать... 05.03.2011
  • Этот пример отлично работает, за исключением того, что в iOS 4.3 есть ошибка, из-за которой он работает неправильно. 29.08.2011

  • 2

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

    <a href="#tab1">Tab 1</a>
    <a href="#tab2">Tab 2</a>
    
    <a id="tab1"></a>
    <a id="tab2"></a>
    
    <div class="tab tab1 default-tab">Some content</div>
    <div class="tab tab2">Some other content</div>
    

    и CSS:

    .tab {display:none}
    
    .default-tab {display:block}
    
    :target ~ .default-tab {display:none}
    
    #tab1:target ~ .tab1,
    #tab2:target ~ .tab2 {
      display: block
    }
    

    Это позволяет вам упорядочивать вкладки так, как вы хотите, но если вы генерируете html динамически, вам нужно будет динамически генерировать css. Или же выберите максимальное количество вкладок для поддержки при написании css.

    30.03.2015
  • Окончательно! Это первое, что я нашел, что работает. Я использую #home вместо .default-tab, но все же. Удивительно. Спасибо. Другое решение, которое я нашел, заключалось в использовании вместо этого :last, и оно вообще не работало. У него все еще есть проблема, что вкладка по умолчанию должна быть последней, но если вы отображаете только одну за раз, это не проблема. Спасибо. 11.08.2016

  • 3

    Я думаю, что вы хотели бы сделать, это выбрать что-то вроде .tab_container:not(> :target) > .default для отображения вкладки по умолчанию, когда никто не нацелен. Однако это невозможно, поскольку псевдокласс :not() принимает только простые селекторы (то есть только :target, а не > :target, и в этом случае вы должны проверять цель контейнера, а не дочерние элементы).

    Я бы сделал одно из следующих действий:

    • Используйте Javascript, чтобы установить цель на первую вкладку при загрузке (или просто требуйте наличия привязки).

    • Добавьте определенный класс переопределения для первой активной вкладки и удалите его (снова с помощью Javascript) после первого переключения вкладок.

    Первый вариант испортит историю браузера, а второй будет немного больше беспорядка в коде. Я не могу придумать "идеальное" решение прямо сейчас. Может быть, вам лучше просто использовать Javascript для определения текущей цели, чтобы получить совместимость с браузерами, отличными от CSS3, и решить эту конкретную проблему более простым способом?

    28.07.2010
  • Совместимость не проблема. Меня волнует только Webkit. 29.07.2010
  • Это может стать возможным в будущем с .tab_container:not(:has(> :target)) > .default, но только если :has() с дочерним комбинатором войдет в CSS. В противном случае вам все равно придется использовать JavaScript. (FWIW, пример, который я привел, сегодня полностью работает в jQuery.) 30.03.2015

  • 4

    Кажется, это самый короткий ответ, который я смог найти:

    location=location.hash||"#updates-list"

    Это просто перенаправляет пользователя на действительный хэш, если он в настоящее время не существует or empty #.

    У ~98% пользователей включен JavaScript, так что решение на JS не должно быть проблемой.

    09.09.2015

    5

    Полезный:

    .tab#tabControl { display:block; }
    
    .tab:not(:target) { display:none; }
    
    .tab:target ~ #tabControl { display:none; }
    
    08.03.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..