user-select: none; pointer-events: none сделают это для текста, но сам div скопируется если рядом будет еще какой текст и от него "провести" выдение <div class="test">L</div> user-select: none обычно и так не даёт тексту попасть в буфер обмена, даже если div визуально подсвечивается при протягивании. Попробуй выделить соседний текст, скопировать и вставить куда-нибудь — «L» там не окажется. Если всё же попадает (бывает в старых браузерах), можно вынести букву в псевдоэлемент: .test::before { content: "L"; } и оставить div пустым. <div>
<label for="button1">Button 1</label>
<button id="button1">I am not inert</button>
</div>
<div inert>
<label for="button2">Button 2</label>
<button id="button2">I am inert</button>
</div>
<div>
<label for="button3">Button 3</label>
<button id="button3">I am not inert</button>
</div>Button 1
Button 3