2016-05-30 8 views
-5

Ich habe eine Frage. Wie kann ich eine bewegliche <hr> erstellen und über ein Bild bewegen? Ich dachte über die Änderung des Parameters "Marge", aber ich weiß nicht, wie man die <hr> über das Bild setzen.Wie kann ich einen beweglichen <hr> machen?

Bitte helfen Sie mir, wenn Sie können.

+0

Bitte [erstellen und ein minimales, vollständiges und überprüfbares Beispiel liefern] (http://stackoverflow.com/help/mcve) Ihres Codes – chazsolo

+0

So wie Sie alle anderen HTML auf Bild überlagern. Brauchen Sie absolute Position im übergeordneten Container des Bildes – charlietfl

+0

Willkommen bei stackoverflow @ kipill, Stackoverflow verwendet Regeln, um wartbare Fragen und Antworten, die Langlebigkeit haben, zu ermutigen. Ein guter Anfang ist es, Ihren eigenen kaputten Code zu veröffentlichen und wir können versuchen, Ihnen dabei zu helfen. Stellen Sie sicher, dass Sie den obigen Link von Chazsolo gelesen haben. –

Antwort

0

Antwort basiert auf: https://jsfiddle.net/tovic/Xcb8d/

CSS

#draggable-hr { 
    cursor:move; 
    position: absolute; 
    width: 100%; 
} 

HTML

<hr id="draggable-hr"> 

JavaScript

var selected = null, // Object of the element to be moved 
x_pos = 0, y_pos = 0, // Stores x & y coordinates of the mouse pointer 
x_elem = 0, y_elem = 0; // Stores top, left values (edge) of the element 

    // Will be called when user starts dragging an element 
    function _drag_init(elem) { 
     // Store the object of the element which needs to be moved 
     selected = elem; 
     x_elem = x_pos - selected.offsetLeft; 
     y_elem = y_pos - selected.offsetTop; 
    } 

    // Will be called when user dragging an element 
    function _move_elem(e) { 
     x_pos = document.all ? window.event.clientX : e.pageX; 
     y_pos = document.all ? window.event.clientY : e.pageY; 
     if (selected !== null) { 
      selected.style.left = (x_pos - x_elem) + 'px'; 
      selected.style.top = (y_pos - y_elem) + 'px'; 
     } 
    } 

    // Destroy the object when we are done 
    function _destroy() { 
     selected = null; 
    } 

    // Bind the functions... 
    document.getElementById('draggable-hr').onmousedown = function() { 
     _drag_init(this); 
     return false; 
    }; 

    document.onmousemove = _move_elem; 
    document.onmouseup = _destroy; 
+0

Vielen Dank für Ihre Antwort – kipill

0

Warum wollen Sie das tun wollen?

Sie möchten eine Linie in einem Bild richtig zeichnen? Warum verwenden Sie keine Leinwand dafür? Hier ein Beispiel:

https://jsfiddle.net/vo769cfx

Original image: 
<br> 
<br> 
<img id="scream" width="220" height="277" src="http://www.w3schools.com/tags/img_the_scream.jpg" alt="The Scream"> 
<br> Canvas: 
<br> 
<br> 
<canvas id="myCanvas" width="320" height="277"></canvas> 

    var c = document.getElementById("myCanvas"); 
    var ctx = c.getContext("2d"); 
    var img = document.getElementById("scream"); 

    ctx.drawImage(img, 50, 0); 
    ctx.beginPath(); 
    ctx.moveTo(0, 138); 
    ctx.lineTo(320, 138); 
    ctx.stroke(); 

Sie müssen nur die Zeile jedes Mal neu zeichnen Klicken und Ziehen in der Leinwand.

+0

Danke. Ich habe über Leinwand nachgedacht, aber dieses Beispiel habe ich vorher nicht gesehen. Ich mache es, weil ich eine Fähigkeit haben kann, diese Linie zu bewegen. – kipill

Verwandte Themen