CSS для захоплення курсорів (перетягування)


170

У мене є веб-переглядач JavaScript, де користувачеві потрібно захопити фон, щоб перемістити весь екран. Тому я хочу, щоб курсор змінився, коли вони наводить курсор над фоном. Для цього ідеально підійдуть курсори -moz-grabта -moz-grabbingCSS. Звичайно, вони працюють лише у Firefox ... Чи є еквівалентні курсори для інших браузерів? Чи потрібно робити щось трохи більше на замовлення, ніж стандартні курсори CSS?

Відповіді:


106

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

move
Позначає, що щось потрібно перемістити.


1
Я побачив значок переміщення, подумав, що піктограма захоплення краще. Але тепер, коли ви вказали, w3c вважає, що курсор "Вказує, що потрібно перемістити", це має найбільш сенс. Дякую.
у.

2
@at: Ви можете вказати декілька курсорів у списку, розділеному комами, і агент користувача повинен використовувати перший, який він розуміє. Таким чином, ви можете використовувати -moz * і "рухатися" як резервний.
mu занадто короткий

14
@muistooshort Ви впевнені, що список із комами все ще працює? Я використовую cursor:move; cursor:-webkit-grab; cursor:-moz-grab; cursor:grab;найбільш переважний останній.
Боб Штейн

2
@ BobStein-VisiBone: Я думаю, що там могла виникнути якась плутанина пару років тому. AFAIK кома-лист працює , якщо ви вказуєте декілька форматів подобається , cursor: url(example.svg#linkcursor), url(hyper.cur), pointerа не кілька можливих значень. Я думаю, що вам може знадобитися підхід.
mu занадто короткий

417

У випадку, якщо хтось інший натрапить на це питання, можливо, це те, що ви шукали:

.grabbable {
    cursor: move; /* fallback if grab cursor is unsupported */
    cursor: grab;
    cursor: -moz-grab;
    cursor: -webkit-grab;
}

 /* (Optional) Apply a "closed-hand" cursor during drag operation. */
.grabbable:active {
    cursor: grabbing;
    cursor: -moz-grabbing;
    cursor: -webkit-grabbing;
}

44
чомусь "захоплення" з'являється лише тоді, коли я відпущу мишу. будь-яка ідея, чому це?
Йона

@Jona я здогадуюсь, що ви не додавали grabbableклас до жодного елемента, який можна захопити, і ви перемикаєте клас під час їх перетягування.
Еміль Бержерон

1
приємна розширена відповідь, дякую за додавання додаткового "захоплення" біт. приємний дотик. :)
scotself

1
Для тих, хто має проблеми з цим рішенням, мені довелося встановити grabкурсор, :hoverа не звичайний селектор, тобто .grabbable:hoverу прикладі вище.
Маркус Амальтея Магнусон

@Jona додавши ці стилі до батьківського, <ul>а не <li>в моєму випадку вирішив проблему
Артур Тарасов

52

CSS3 grab і grabbingтепер дозволені значення для cursor. Щоб забезпечити декілька резервних копій для сумісності між браузером 3, включаючи власні файли курсорів, повне рішення виглядатиме так:

.draggable {
    cursor: move; /* fallback: no `url()` support or images disabled */
    cursor: url(images/grab.cur); /* fallback: Internet Explorer */
    cursor: -webkit-grab; /* Chrome 1-21, Safari 4+ */
    cursor:    -moz-grab; /* Firefox 1.5-26 */
    cursor:         grab; /* W3C standards syntax, should come least */
}

.draggable:active {
    cursor: url(images/grabbing.cur);
    cursor: -webkit-grabbing;
    cursor:    -moz-grabbing;
    cursor:         grabbing;
}

Оновлення 2019-10-07:

.draggable {
    cursor: move; /* fallback: no `url()` support or images disabled */
    cursor: url(images/grab.cur); /* fallback: Chrome 1-21, Firefox 1.5-26, Safari 4+, IE, Edge 12-14, Android 2.1-4.4.4 */
    cursor: grab; /* W3C standards syntax, all modern browser */
}

.draggable:active {
    cursor: url(images/grabbing.cur);
    cursor: grabbing;
}

1
Ваше повідомлення є дублікатом J.Steve

9
@ user2230470 Він відрізняється у двох важливих моментах: По-перше, він надає зображення курсора для браузерів, які не підтримують grabзображення, а зображення курсору. По-друге, найкраще застосовувати синтаксис стандартів після встановлених значень постачальника.
Волкер Е.

справді ?! як так? також, де я можу знайти більше інформації про стандартні практики, подібні до таких.

8
@ user2230470 - тому що у випадках, коли браузер підтримує 2 поведінки, де префікс, можливо, був реалізований трохи до завершення стандартного (і, отже, може діяти інакше), ви хочете, щоб він використовував стандартний ... і будь-яке визначення приходить LAST - це той, який буде використовувати браузер. Тому стандарт повинен бути останнім.
Jimbo Jonny

3
це images/grab.curприклад URL-адреси для зображення, яке мені потрібно розмістити на своєму веб-сервері, чи це якась магічна річ IE?
Jon z

11

"більше спеціальних", ніж курсори CSS, означає плагін певного типу, але ви можете повністю вказати власні курсори за допомогою CSS. Я думаю, що у цьому списку є те, що ви хочете:

.alias {cursor: alias;}
.all-scroll {cursor: all-scroll;}
.auto {cursor: auto;}
.cell {cursor: cell;}
.context-menu {cursor: context-menu;}
.col-resize {cursor: col-resize;}
.copy {cursor: copy;}
.crosshair {cursor: crosshair;}
.default {cursor: default;}
.e-resize {cursor: e-resize;}
.ew-resize {cursor: ew-resize;}
.grab {cursor: grab;}
.grabbing {cursor: grabbing;}
.help {cursor: help;}
.move {cursor: move;}
.n-resize {cursor: n-resize;}
.ne-resize {cursor: ne-resize;}
.nesw-resize {cursor: nesw-resize;}
.ns-resize {cursor: ns-resize;}
.nw-resize {cursor: nw-resize;}
.nwse-resize {cursor: nwse-resize;}
.no-drop {cursor: no-drop;}
.none {cursor: none;}
.not-allowed {cursor: not-allowed;}
.pointer {cursor: pointer;}
.progress {cursor: progress;}
.row-resize {cursor: row-resize;}
.s-resize {cursor: s-resize;}
.se-resize {cursor: se-resize;}
.sw-resize {cursor: sw-resize;}
.text {cursor: text;}
.url {cursor: url(https://www.w3schools.com/cssref/myBall.cur),auto;}
.w-resize {cursor: w-resize;}
.wait {cursor: wait;}
.zoom-in {cursor: zoom-in;}
.zoom-out {cursor: zoom-out;}
<h1>The cursor Property</h1>
<p>Hover mouse over each to see how the cursor looks</p>

<p class="alias">cursor: alias</p>
<p class="all-scroll">cursor: all-scroll</p>
<p class="auto">cursor: auto</p>
<p class="cell">cursor: cell</p>
<p class="context-menu">cursor: context-menu</p>
<p class="col-resize">cursor: col-resize</p>
<p class="copy">cursor: copy</p>
<p class="crosshair">cursor: crosshair</p>
<p class="default">cursor: default</p>
<p class="e-resize">cursor: e-resize</p>
<p class="ew-resize">cursor: ew-resize</p>
<p class="grab">cursor: grab</p>
<p class="grabbing">cursor: grabbing</p>
<p class="help">cursor: help</p>
<p class="move">cursor: move</p>
<p class="n-resize">cursor: n-resize</p>
<p class="ne-resize">cursor: ne-resize</p>
<p class="nesw-resize">cursor: nesw-resize</p>
<p class="ns-resize">cursor: ns-resize</p>
<p class="nw-resize">cursor: nw-resize</p>
<p class="nwse-resize">cursor: nwse-resize</p>
<p class="no-drop">cursor: no-drop</p>
<p class="none">cursor: none</p>
<p class="not-allowed">cursor: not-allowed</p>
<p class="pointer">cursor: pointer</p>
<p class="progress">cursor: progress</p>
<p class="row-resize">cursor: row-resize</p>
<p class="s-resize">cursor: s-resize</p>
<p class="se-resize">cursor: se-resize</p>
<p class="sw-resize">cursor: sw-resize</p>
<p class="text">cursor: text</p>
<p class="url">cursor: url</p>
<p class="w-resize">cursor: w-resize</p>
<p class="wait">cursor: wait</p>
<p class="zoom-in">cursor: zoom-in</p>
<p class="zoom-out">cursor: zoom-out</p>

Джерело: CSS курсор Властивість @ W3Schools


5

Ви можете створити власні курсори та встановити їх як курсор за допомогою cursor: url('path-to-your-cursor');, або знайти Firefox та скопіювати їх (бонус: приємний послідовний вигляд у кожному браузері).


5

Я можу запізнитися, але ви можете спробувати наступний код, який працював для мене для перетягування.

.dndclass{
    cursor: url('../images/grab1.png'), auto; 

}

.dndclass:active {
    cursor: url('../images/grabbing1.png'), auto;
}

Ви можете використовувати зображення нижче в URL-адресі вище. Переконайтеся, що це прозоре зображення PNG. Якщо ні, завантажте його з google.

введіть тут опис зображення введіть тут опис зображення


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.