Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Jquery UI: resizable и handles


Автор: railist 9.4.2013, 19:51
У меня очередной вопрос про resizable.
Мне нужно сделать вот так
user posted image
То есть, чтобы возле объекта, размер которого меняется, были "квадратики" для изменени размера.  
Вот я http://jsfiddle.net/digitalaxis/j2JU6/ в интернете скрипт.
Вот он весь целиком 
Код


<html>
<head>
<link rel="stylesheet" href="jquery-ui-1.10.2/themes/base/jquery-ui.css" />
  <script src="jquery-1.9.1.min.js"></script>
 <script src="jquery-ui-1.10.2/ui/jquery-ui.js"></script>
<title>border</title>
<script type="text/javascript">
$(function() {

$('#elementResizable').resizable({ 
    handles: {
        'ne': '#negrip',
        'se': '#segrip',
        'sw': '#swgrip',
        'nw': '#nwgrip'
    }
});


});
</script>
<style>

#elementResizable {
    border: 1px solid #000000;
    width: 300px;
    height: 40px;
    overflow: hidden;
}
#nwgrip, #negrip, #swgrip, #segrip, #ngrip, #egrip, #sgrip, #wgrip {
    width: 10px;
    height: 10px;
    background-color: #ffffff;
    border: 1px solid #000000;
}
#segrip {
    right: -5px;
    bottom: -5px;
}

</style>
</head>
<body>
<div id='elementResizable'>
    <h1>Full Name</h1>
    Title
    <div class="ui-resizable-handle ui-resizable-nw" id="nwgrip"></div>
    <div class="ui-resizable-handle ui-resizable-ne" id="negrip"></div>
    <div class="ui-resizable-handle ui-resizable-sw" id="swgrip"></div>
    <div class="ui-resizable-handle ui-resizable-se" id="segrip"></div> 
</div
</body>
</html>
 
В результате получается 
user posted image
Мне нужно сделать так, чтобы "квадратики" были как на первом изображении - не только в углах, но и по середине border'а.

Я открыл api jquery ui и начал искать как это сделать 

Цитата

 String: A comma delimited list of any of the following: n, e, s, w, ne, se, sw, nw, all. The necessary handles will be auto-generated by the plugin.
Object:

The following keys are supported: { n, e, s, w, ne, se, sw, nw }. The value of any specified should be a jQuery selector matching the child element of the resizable to use as that handle. If the handle is not a child of the resizable, you can pass in the DOMElement or a valid jQuery object directly.

Я так понял, что нужно использовать "хандлы" n, e ,s ,w
И вот как я изменил скрипт(часть изменений выделены жирным(желтым) , другая часть(то что в body) почему то не выделилась)
Код

<html>
<head>
<link rel="stylesheet" href="jquery-ui-1.10.2/themes/base/jquery-ui.css" />
  <script src="jquery-1.9.1.min.js"></script>
 <script src="jquery-ui-1.10.2/ui/jquery-ui.js"></script>
<title>border</title>
<script type="text/javascript">
$(function() {

$('#elementResizable').resizable({ 
    handles: {
        'n': '#negrip',
        'e': '#segrip',
        's': '#swgrip',
        'w': '#nwgrip'
    }
});


});
</script>
<style>

#elementResizable {
    border: 1px solid #000000;
    width: 300px;
    height: 40px;
    overflow: hidden;
}
#nwgrip, #negrip, #swgrip, #segrip, #ngrip, #egrip, #sgrip, #wgrip {
    width: 10px;
    height: 10px;
    background-color: #ffffff;
    border: 1px solid #000000;
}
#segrip {
    right: -5px;
    bottom: -5px;
}

</style>
</head>
<body>
<div id='elementResizable'>
    <h1>Full Name</h1>
    Title
    <div class="ui-resizable-handle ui-resizable-n" id="nwgrip"></div>
    <div class="ui-resizable-handle ui-resizable-e" id="negrip"></div>
    <div class="ui-resizable-handle ui-resizable-s" id="swgrip"></div>
    <div class="ui-resizable-handle ui-resizable-w" id="segrip"></div> 
</div>
</body>
</html>

получилось всё-равно не то
user posted image

Помогите, пожалуйста, сделать как на первом скрине(зелёном квадрате)

Автор: railist 10.4.2013, 16:07
Мне помогли на другом сайте
http://jsfiddle.net/j2JU6/256/ решение

Автор: Aliance 10.4.2013, 16:45
Тебе не помогли здесь, скорее всего потому, что ты перегрузил тему лишним кодом, который отпугнул многих даже разбираться в нем. Плюс решение-то твоеговопроса - чистый CSS, а вопрос был задан в теме по JS smile

Что же касается решения, то немного следует подкорректировать позицию ползунков, прописав дополнительно:
Код
margin-top: -5px; /* 1/2 от height */

для запада и востока, и
Код
margin-left: -5px; /* 1/2 от width */

для юга и севера

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)