CSS селектор для первого элемента с классом

Большая вещь, которая изменилась между Windows XP и Windows Vista / 7, - это введение UAC, что означает, что пользователи, даже если они созданы как администраторы, обычно не имеют доступа для чтения и записи к «важным» местоположениям, таким как %programfiles% (обычно C:\Program Files или C:\Program Files (x86)). Вот почему ваше приложение работает в Windows XP, а не в Windows Vista.

Вам необходимо сохранить данные DATA в каталоге %programdata% (обычно C:\ProgramData), если данные распределяются между пользователями по машина или %appdata% (обычно C:\Users\USERNAME_GOES_HERE\AppData\Roaming), если она специфична для данного пользователя. Теперь вы больше не сталкиваетесь с проблемой неспособности записать файл.

Причиной этого является то, что путем хранения данных в каталоге установки программ вы делали неправильную вещь . Windows не помешала вам сделать это раньше, но было довольно широко документировано, что %programfiles% не было подходящим местом для хранения данных.

838
задан TylerH 18 June 2018 в 15:05
поделиться

3 ответа

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

<div>
    <span class="red"> <!-- MATCH -->
</div>

<div>
    <span>Blah</span>
    <p class="red"> <!-- NO MATCH -->
</div>

<div>
    <span>Blah</span>
    <div><p class="red"></div> <!-- MATCH -->
</div>
9
ответ дан 22 November 2019 в 21:06
поделиться

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

  1. Назначьте класс first элементу при его создании, например:

     

    CSS:

     .first.red {
    граница: 5 пикселей сплошной красный; {{1} }} 
     

    Этот CSS сопоставляет только элементы с как first , так и red классами.

  2. Или сделайте то же самое в JavaScript, например, вот какой jQuery вы бы использовали для этого, используя тот же CSS, что и выше:

     $ (". Red: first"). AddClass ("first"); 
     
9
ответ дан 22 November 2019 в 21:06
поделиться

Селектор : first-child предназначен, как следует из названия, для выбора первого дочернего элемента родительского тега. Дочерние элементы должны быть встроены в один и тот же родительский тег. Ваш точный пример будет работать (только что попробовал здесь ):

<body>
    <p class="red">first</p>
    <div class="red">second</div>
</body>

Может быть, вы вложили свои теги в разные родительские теги? Действительно ли ваши теги класса red являются первыми тегами родительского элемента?

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

<div>
    <p class="red">first</p>
    <div class="red">second</div>
</div>
<div>
    <p class="red">third</p>
    <div class="red">fourth</div>
</div>

первый и третий тогда будут красными.

Обновление:

Я не знаю, почему Мартин удалил свой ответ, но у него было решение, селектор : nth-of-type :

<html>
<head>
<style type="text/css">
.red:nth-of-type(1)
{
    border:5px solid red;
} 
</style>
</head>

<body>
    <div class="home">
        <span>blah</span>
        <p class="red">first</p>
        <p class="red">second</p>
        <p class="red">third</p>
        <p class="red">fourth</p>
    </div>
</body>
</html>

Кредиты Мартину . Дополнительная информация, например здесь .Имейте в виду, что это селектор CSS 3, поэтому не все браузеры его распознают (например, IE8 или старше).

317
ответ дан 22 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: