Gridstack.js: рдкреНрд░рддрд┐рд╢рдд рдХреЗ рдмрдЬрд╛рдп рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдЧреНрд░рд┐рдб рдмрдирд╛рдирд╛ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдирд╡ре░ 2016  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: gridstack/gridstack.js

рдореИрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрд▓ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ 20px рдЧреБрдгрд╛ 20px рдЧреНрд░рд┐рдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬреЗрдЯ 20px рд╡реГрджреНрдзрд┐ рдореЗрдВ рддрд░рд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ cellHeight: 20 рдкрд╛рд╕ рдХрд░рдХреЗ рдКрдВрдЪрд╛рдИ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЪреМрдбрд╝рд╛рдИ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣реА рдореИрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реВрдБ:

var options = {
      float: true,
      width: 53,
      acceptWidgets: '.grid-stack-item',
      cellHeight: 20,
      verticalMargin: 0,
      disableResize: true,
      alwaysShowResizeHandle: false
  };

  $('#grid-1').gridstack(options);

рдореИрдВрдиреЗ cellWidth: 20 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ% рдХреЗ рдмрдЬрд╛рдп px рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП scss рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред

.grid-stack > .grid-stack-item {
  $gridstack-columns: 60;

  <strong i="11">@for</strong> $i from 1 through $gridstack-columns {
    &[data-gs-width='#{$i}'] { width: $i * 20px; }
    &[data-gs-x='#{$i}'] { left: $i * 20px; }
  }
}

рдпрд╣ рдЧреНрд░рд┐рдб рдЖрдЗрдЯрдо рдХреЛ рд╕рд╣реА 20px рдЧреНрд░рд┐рдб рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдиреИрдк рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд╖реИрддрд┐рдЬ рдбреНрд░реИрдЧрд┐рдВрдЧ рдХрдо рд╕реБрдЪрд╛рд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ .scss рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдХреНрд╖реИрддрд┐рдЬ рдбреНрд░реИрдЧрд┐рдВрдЧ рдореИрдкреНрд╕ рдХреЛ рдЧреНрд░рд┐рдб рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХреЗрдВ? рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ width рдпрд╛ cellWidth рдкрд░рдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдореИрдВ рдХрд┐рд╕реА рднреА% рдЧрдгрдирд╛ рд╕реЗ рджреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ :)

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@cblokker рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдореИрдВ рдпрд╣ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рди рдХрд┐ рдкреНрд░рддрд┐рд╢рддред рдореЗрд░рд╛ рд╕рд╣реА рдЬрдЧрд╣реЛрдВ рдкрд░ рд╕реНрдиреИрдк рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдЕрдВрддрд░ рд╕реЗ рдмрдВрдж рд╣реИред

рдпрд╣ рд╡рд╣ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдореБрдЭреЗ рджреБрдГрдЦ рджреЗ рд░рд╣рд╛ рд╣реИ:

    GridStack.prototype.cellWidth = function() {
        return Math.round(this.container.outerWidth() / this.opts.width);
    };

рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдзрд╛рд░рд┐рдд рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ рдкрд┐рдХреНрд╕рд▓ рдореЗрдВ рдХреЙрд▓рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рдЗрд╕.opts.width рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд┐рдбрд╕реНрдЯреИрдХ рдореЗрдВ рдХреБрдЫ рд╕реНрдорд╛рд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдореЙрдбрд▓ (% рдпрд╛ рдкреАрдПрдХреНрд╕) рдореЗрдВ рдерд╛ рдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕ рдореЛрдб рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ 2: рдореЗрд░рд╛ 5 рдорд┐рдирдЯ рдХрд╛ рд╕реБрдзрд╛рд░ред рдпрд╣, рдХрдо рд╕реЗ рдХрдо рдЕрднреА рддрдХ, рдЗрд╕рдХреЗ рдкреНрд░рддрд┐ рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИред
рдбрд┐рдл: рд╕рдкреЛрд░реНрдЯ-рдкрд┐рдХреНрд╕реЗрд▓рд╡рд┐рдбреНрде

рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ 4k рд╕реНрдХреНрд░реАрди рдореЗрдВ рдЧреНрд░рд┐рдб рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдм рдкреЗрдЬ рдЪреМрдбрд╝рд╛ рд╣реЛ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдЧреНрд░рд┐рдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдЖрдзрд╛ рд╣реЛ, рдФрд░ рдлрд┐рд░ рдЬрдм рдЖрдк рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдкреГрд╖реНрда рдХреЗ рдиреАрдЪреЗ рдПрдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЬреЛ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рд╡рд╣ рдЪреМрдбрд╝рд╛рдИ рдмрд╣реБрдд рд╕рдВрдХреАрд░реНрдг рд╣реИред

рдореИрдВ рднреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЧреНрд░рд┐рдбрд╕реНрдЯреИрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЧреНрд░рд┐рдб рд╕реНрдЯреИрдХ рдореЗрдВ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рдмреАрдЪ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ (рдПрдХ рдкрдВрдХреНрддрд┐, рдЕрдХреНрд╖рдордСрди рдХреЙрд▓рдо рдореЛрдб, рдКрдВрдЪрд╛рдИ = 1) рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рд╕рднреА рдЯрд╛рдЗрд▓реЛрдВ рдХреЛ 100px рдЪреМрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдореЗрд░реА рд╕рднреА рдЯрд╛рдЗрд▓реЗрдВ рдЪреМрдбрд╝рд╛рдИ = 1 рд╣реИрдВ, рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):
рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ
$tile-width: 100px; /*100px*/ .grid-stack-item[data-gs-width="1"] { width: $tile-width; min-width: $tile-width; max-width: $tile-width; } .grid-stack-item { <strong i="9">@for</strong> $i from 1 through 20 { &[data-gs-x='#{$i}'] { left: $i * $tile-width; } } }
рдирд┐рд░реНрдорд╛рддрд╛:
const width = $('.grid-stack').outerWidth(); this.grid = $('.grid-stack').gridstack({ auto: false, cellHeight: 80, disableResize: true, verticalMargin: 0, width: Math.round(width/100), height: 1, disableOneColumnMode: true }).data('gridstack');
рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ
resizeHandler() { const width = $('.grid-stack').outerWidth(); const grid = $('.grid-stack').data('gridstack'); grid.setGridWidth(Math.round(width/100), true); }
рд╣реИрдХ рд╡рд░реНрддрдорд╛рди рдЧреНрд░рд┐рдб рдЪреМрдбрд╝рд╛рдИ (рдкреАрдПрдХреНрд╕) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреМрдбрд╝рд╛рдИ (рдХреЙрд▓рдо рдЧрд┐рдирддреА) рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ рд╕реЗрд▓рд╡рд┐рдбреНрде рдХреЛ 100px (рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реИред

рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЖрдк cellHeight рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдЧреНрд░рд┐рдбрд╕реНрдЯреИрдХ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдпрд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдлреИрд╢рди рдореЗрдВ, рдЖрдк рдЬреЛ рднреА рдЕрдиреБрдкрд╛рдд рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд┐рдХреНрд╕реЗрд▓-рдЖрдзрд╛рд░рд┐рдд рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреЛ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

troolee picture troolee  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adumesny picture adumesny  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bhutiyakishan1 picture bhutiyakishan1  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

starplanet picture starplanet  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

myzhibie picture myzhibie  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ