2017-10-07 15 views
0

こんにちは、私はjqueryサイズ変更可能、回転可能()を使用しています[https://cdn.jsdelivr.net/gh/godswearhats/[email protected]/jquery.ui.rotatable.min.js]私のプロジェクトでは。cssを使用してdivを囲むカスタムオーバーレイ - jQueryのサイズ変更用のカスタムハンドル

だから、この関数は、divを回転させてサイズを変更するハンドルを取得すると、

$(function() { 
 

 
     var inputLocalFont = document.getElementById("user_file"); 
 
     inputLocalFont.addEventListener("change",previewImages,false); 
 

 
     function previewImages(){ 
 
      var fileList = this.files; 
 

 
      var anyWindow = window.URL || window.webkitURL; 
 

 
       for(var i = 0; i < fileList.length; i++){ 
 
        var objectUrl = anyWindow.createObjectURL(fileList[i]); 
 
        $('.new-multiple').append('<div class="img-div"><img src="' + objectUrl + '" class="newly-added" /></div>'); 
 
        window.URL.revokeObjectURL(fileList[i]); 
 
       } 
 

 
     $(".img-div").draggable(); 
 
\t  $('.img-div').rotatable(); 
 
     $(".img-div").resizable({aspectRatio:true}); 
 
       $(".newly-added").on("click", function(e) { 
 
\t $(".newly-added").removeClass("img-selected"); 
 
     $(this).addClass("img-selected"); 
 
\t  e.stopPropagation() 
 
    }); 
 

 
\t $(document).on("click", function(e) { 
 
\t \t if ($(e.target).is(".newly-added") === false) { 
 
\t \t $(".newly-added").removeClass("img-selected"); 
 
\t \t } 
 
\t }); 
 
       
 
       } 
 
});
.new-multiple{ 
 
    width:400px !important; 
 
    height:400px !important; 
 
    background:white; 
 
    border:2px solid red; 
 
    overflow:hidden; 
 
    } 
 
    
 
    
 
.img-div{ 
 
    width:200px; 
 
    height:200px; 
 
} 
 
.newly-added{ 
 
    width:100%; 
 
    height:100%; 
 
} 
 

 
.img-selected{ 
 
    box-shadow: 1px 2px 6px 6px rgb(206, 206, 206); 
 
    border:2px solid rgb(145, 44, 94); 
 
} 
 
.ui-resizable-handle.ui-resizable-se.ui-icon.ui-icon-gripsmall-diagonal-se { 
 
    background-color: white; 
 
    border: 1px solid tomato; 
 
} 
 
.ui-rotatable-handle.ui-draggable { 
 
    background-color: white !important; 
 
    border: 1px solid tomato; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/godswearhats/[email protected]/jquery.ui.rotatable.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> \t 
 
<script src="https://cdn.jsdelivr.net/gh/godswearhats/[email protected]/jquery.ui.rotatable.min.js"></script> 
 
<input name="user_file[]" id="user_file" style="position: relative;overflow: hidden" multiple="" type="file"> 
 

 
<div class="new-multiple"></div>

https://jsfiddle.net/vd11qyzv/21/

だから、私はこの

enter image description here

などのコントロールハンドルを取得しますが、私はこのようにカスタムコントロールハンドルを配置したい画像をアップロードしていたときに

enter image description here

どのように私はcssとjqueryを使用してこれを達成できますか?助けてください

+0

:http://api.jqueryui.com/resizable /#option-handles以前の投稿で言及したように、たくさんのリソースがありますあなたが見るならe。例もあります。 – Twisty

答えて

1

サイズ変更でhandlesオプションを設定すると、CSSでそれらを管理できます。彼らのスタイルと場所。

CSSスニペット

.ui-resizable-handle { 
    border: 0; 
    border-radius: 50%; 
    background-color: #00CCff; 
    width: 14px; 
    height: 14px; 
} 

.ui-resizable-nw { 
    top: -7px; 
    left: -7px; 
} 

.ui-resizable-ne { 
    top: -7px; 
    right: -7px; 
} 

.ui-resizable-e { 
    top: calc(50% - 7px); 
    right: -7px; 
} 

.ui-resizable-w { 
    top: calc(50% - 7px); 
    left: -7px; 
} 

.ui-resizable-sw { 
    bottom: -7px; 
    left: -7px; 
} 

.ui-resizable-se { 
    right: -7px; 
    bottom: -7px; 
} 

.ui-resizable-se.ui-icon { 
    display: none; 
} 

.ui-rotatable-handle { 
    background-size: 14px; 
    background-repeat: no-repeat; 
    background-position: center; 
    border: 0; 
    border-radius: 50%; 
    background-color: #00CCff; 
    margin-left: calc(50% - 9px); 
    bottom: -5px; 
    width: 18px; 
    height: 18px; 
} 

はJavaScript

$(function() { 
    var inputLocalFont = $("#user_file"); 
    inputLocalFont.change(previewImages); 

    function previewImages() { 
    var fileList = this.files; 
    var anyWindow = window.URL || window.webkitURL; 

    for (var i = 0; i < fileList.length; i++) { 
     var objectUrl = anyWindow.createObjectURL(fileList[i]); 
     var $newDiv = $("<div>", { 
     class: "img-div" 
     }); 
     var $newImg = $("<img>", { 
     src: objectUrl, 
     class: "newly-added" 
     }).appendTo($newDiv); 
     $(".new-multiple").append($newDiv); 
     $newDiv.draggable(); 
     $newDiv.rotatable(); 
     $newDiv.resizable({ 
     aspectRatio: true, 
     handles: "ne, nw, e, se, sw, w" 
     }); 
     $newDiv.find(".ui-icon").removeClass("ui-icon ui-icon-gripsmall-diagonal-se"); 
     window.URL.revokeObjectURL(fileList[i]); 
    } 
    $(".newly-added").on("click", function(e) { 
     $(".newly-added").removeClass("img-selected"); 
     $(this).addClass("img-selected"); 
     e.stopPropagation() 
    }); 

    $(document).on("click", function(e) { 
     if ($(e.target).is(".newly-added") === false) { 
     $(".newly-added").removeClass("img-selected"); 
     } 
    }); 
    } 
}); 

実施例:あなたがここに起動する場合がありますhttps://jsfiddle.net/Twisty/s99kxydw/

+0

本当にお友達に感謝します。あなたは華麗です。あなたはこれをいかに速く達成することができますか? –

+0

この友人を確認してください。https://stackoverflow.com/questions/46744738/jquery-rotatable-in-degree –

関連する問題