Using CSS to Identify When an Element is Being Grabbed, Dragged, or Moved

Is it possible to detect mouse grabs in addition to changing the cursor on hover?

For example, try dragging the items in the following code snippet. The goal is to change the cursor to cursor: move if an element is being moved.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Sortable - Connect lists</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>
  #sortable {
    border: 1px solid #eee;
    width: 142px;
    min-height: 20px;
    list-style-type: none;
    margin: 0;
    padding: 5px 0 0 0;
    float: left;
    margin-right: 10px;
  }
  #sortable li {
    margin: 0 5px 5px 5px;
    padding: 5px;
    font-size: 1.2em;
    width: 120px;
  }
  #sortable li:hover {
    cursor: pointer;
  }
   
  #sortable li:mousedrag {
    cursor: move;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
  
    $( "#sortable" ).sortable({
        connectWith: ".connectedSortable"
    }).disableSelection();
    
  });
  </script>
</head>
<body>
 
  <ul id="sortable" class="connectedSortable">
    <li class="ui-state-default" value="1">Item 1</li>
    <li class="ui-state-default" value="2">Item 2</li>
    <li class="ui-state-default" value="3">Item 3</li>
    <li class="ui-state-default" value="4">Item 4</li>
    <li class="ui-state-default" value="5">Item 5</li>
  </ul>
  
  <button id="save">Save</button>
 
</body>
</html>

I am looking for a way to achieve something like this:

  #sortable li:mousedrag {
    cursor: move;
  }

Answer №1

When using jQuery UI, the .ui-sortable-helper class is applied to the item being dragged. Check out the code snippet below for an example.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Sortable - Connect lists</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>
  #sortable {
    border: 1px solid #eee;
    width: 142px;
    min-height: 20px;
    list-style-type: none;
    margin: 0;
    padding: 5px 0 0 0;
    float: left;
    margin-right: 10px;
  }
  #sortable li {
    margin: 0 5px 5px 5px;
    padding: 5px;
    font-size: 1.2em;
    width: 120px;
  }
  #sortable li:hover {
    cursor: pointer;
  }
   
  #sortable li:mousedrag {
    cursor: move;
  }
  #sortable li.ui-sortable-helper{
    cursor: move;
}
  </style>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
  
    $( "#sortable" ).sortable({
        connectWith: ".connectedSortable"
    }).disableSelection();
    
  });
  </script>
</head>
<body>
 
  <ul id="sortable" class="connectedSortable">
    <li class="ui-state-default" value="1">Item 1</li>
    <li class="ui-state-default" value="2">Item 2</li>
    <li class="ui-state-default" value="3">Item 3</li>
    <li class="ui-state-default" value="4">Item 4</li>
    <li class="ui-state-default" value="5">Item 5</li>
  </ul>
  
  <button id="save">Save</button>
 
</body>
</html>

Answer №2

Experiment

#sortable li.ui-sortable-helper {
   cursor: move;
}

To see it action, you can check out this live demo: http://jsfiddle.net/mWYEH/

Answer №3

After some tweaking,

$( "#sortable" ).sortable({
    cursor: 'move',
    connectWith: ".connectedSortable"
}).disableSelection();

I ended up changing it to this:

$( "#sortable" ).sortable({
    cursor: 'move',
    connectWith: ".connectedSortable"
}).disableSelection();

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Export the Excel file with hyperlinks to HTML format so that they can be easily opened in a file explorer instead of a web browser

I've got an excel spreadsheet that contains links to local folders. In order to optimize its compatibility with various devices, I convert it to HTML format. Everything seems to be working smoothly, except for one minor issue - when clicking on the li ...

What is the best way to assign a unique ID to every element in this situation?

Here is the given code: var words = ['ac', 'bd', 'bf', 'uy', 'ca']; document.getElementById("wordTable").innerHTML = arr2tbl(2); function arr2tbl(ncols) { return words.reduce((a, c, i) => { ...

Issue encountered: Unable to properly increment the value in Ajax/PHP more than once

I am currently in the process of creating a basic voting system, and as a test run I have set up a div with a PHP variable that should increase by 1 each time a button is clicked. The current setup works fine for one click, but fails to continue incrementi ...

How can we restrict a textbox to only accept alphanumeric characters using solely HTML code?

Imagine a scenario where you have a textbox and your goal is to allow only alphanumeric characters (case insensitive). You've already achieved this using javascript and regex.test(), but now you're wondering if there is a simpler way to implement ...

Activate single elements one at a time

If you want to understand the question better, take a look at my code on jsfiddle. Each Div contains only one link. When you click on the link, it sets the Div to active and shows a hidden Div within it. Clicking the link again toggles the active style an ...

What is the best way to include an icon with dropdown menu options?

I am facing an issue with a text box and modifier dropdown. I want to display an icon representing the current choice when selected. However, using UNICODE for icons causes them not to display properly in certain browsers like Google Chrome unless specific ...

What is the easiest way to create a transparent section on an image using only HTML and CSS?

Is it possible to create a barometer using only HTML and CSS? My idea is to have a background image with just borders and a foreground image filled with color on top of it. I want to display x% of the foreground image's color to represent progress. Wo ...

PHP and Ajax Form Submission Directing to Backend PHP Script

While working on a portfolio, I encountered an issue with the contact form. When I click the submit button to send a message, instead of displaying the bootstrap alert message below the form, the page redirects to the PHP file. Although I receive the emai ...

Is there a way to display an asterisk within a select2 dropdown to signify that a field is mandatory?

I'm facing an issue with the Select2 plugin in my form. While all fields are required and marked by an asterisk when empty, the Select2 dropdown ignores this validation attribute. Therefore, I am wondering: Is there a way to display an asterisk image ...

Thumbnails on the grid are vertically aligned to the top

How can I vertically align grid items at the top without manually setting grid span properties for li elements? I need the layout to be flexible and work for any number of list elements. ul { position: absolute; left: 0; top: 0; width: 400px; ...

Electron triggers MouseLeave event on child elements

Dealing with mouse hover events can be a bit tricky, especially when working with AngularJS in an Electron-hosted app. Here's the HTML template and script I'm using: HTML: <div id="controlArea" (mouseenter) = "onControlAreaEnter()" ...

Proper syntax for jQuery's insertAfter() method when using selectors

I am working with a div <div id="imgDIV"><h4>My Debug DIV</h4></div> and I am trying to add a debug message at the top of the div, right after the first h4. This way, my most recent messages will be displayed at the top. $(' ...

Removing the gaps within table cell contents

Is there a way to eliminate the border space between cells in a table? Despite using cellspacing, I still see a thin white border. Any suggestions on how to fix this? <body> <center><table style="border-collapse: collapse; width:400px; bo ...

Is there a way to dynamically assign the background color of a webpage based on the exact width and height of the user's screen?

I have customized the CSS of my website by setting the height to 800px and width to 1050px. Additionally, I have chosen a blue background-color for the body tag. It is important that the entire application adheres to these dimensions. However, when viewe ...

<head> Javascript codes are failing to run

Currently utilizing JQuery Mobile, my goal is to navigate between pages with minimal script loading each time a page loads. Essentially, I want to import all the general scripts (such as JQuery.js, jquery_mobile.js, main.js, etc.) ONCE for all pages. In m ...

`Why is the color of the <select> element not changing in Firefox?`

I seem to be facing some difficulty replicating this issue accurately. However, I do have a jsfiddle link where the selected text color does not match the selected option text. http://jsfiddle.net/kralco626/9xJvF/8/ (similar to: seting <select> col ...

Is there an optimal method for transforming HTML to PostScript in Java?

Is there an optimal method in Java to convert HTML with CSS2 support into a PostScript file? ...

Unable to Click on Selenium Element

When a link is clicked on a website, the URL remains unchanged but a popup appears on the screen containing elements that can only be accessed after running driver.switchTo().defaultContent(). To access these elements, I have used a javascript executor com ...

JavaScript does not alter the text box for the default dropdown value

My webpage has three elements: a text box named txtSubTotal, a drop-down menu named discount, and another text box called txtGrossTotal. The txtSubTotal updates when the user clicks on the 'ADD' button, while the txtGrossTotal updates based on th ...

Tips for evenly spacing Navbar items in Bootstrap 4

Designing a navigation system using Bootstrap for my website. I'm struggling to figure out the best way to space out the navigation link elements on my navbar so that it looks good on both desktop and mobile screens. This is my current navbar code: ...