Jump to content

Как установить глубину объекта html


Recommended Posts

У меня есть несколько объектов которые можно переместить с помощью мышкой. Как сделать так, чтобы при перемещении объект оказывался поверх остальных. В flash это делается с помощью setChildIndex и swapChildren который меняет глубину объектов. Я знаю что глубина задается во время прорисовки тот объект который рисуется последним отображается поверх всех остальных. Значит при выборе объекта мышкой он должен автоматически прорисовываться последним. Теоретически это понятно, а вот на практике реализовать не получилось. Вот код:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
  <title>Move</title>
</head>
<body>
<script>
var canvas, ctx, num = 0;
var box=[];
var dragok = false;
var startX;
var startY;
var offsetX = 10;
var offsetY = 10;  
function main()
{
canvas = document.createElement("canvas");
ctx = canvas.getContext("2d");
canvas.width = 300;
canvas.height = 300;
canvas.style.background = "#444444";
document.body.appendChild(canvas);
 
box.push({x:30,y:100,width:30,height:30,fill:"#4CFF00",isDragging:false});
box.push({x:70,y:100,width:30,height:30,fill:"#ff550d",isDragging:false});
box.push({x:110,y:100,width:30,height:30,fill:"#FFE347",isDragging:false});
box.push({x:150,y:100,width:30,height:30,fill:"#23FFCB",isDragging:false});
draw();
 
 canvas.onmousedown = myDown;
 canvas.onmouseup = myUp;
 canvas.onmousemove = myMove; 
}
 
function myMove(e){
   if (dragok)
   {
      var mx=parseInt(e.clientX-offsetX);
      var my=parseInt(e.clientY-offsetY);
      
      var dx=mx-startX;
      var dy=my-startY;
      
      for(var i=0;i<box.length;i++)
      {
         if(box[i].isDragging==true)
         {
           box[i].x+=dx;
           box[i].y+=dy;
         }
      }
      draw();
      startX=mx;
      startY=my;
   }
}
 
function myUp(e)
{
  dragok = false;
   for(var i=0;i<box.length;i++){
    box[i].isDragging=false;
  }
}
 
function myDown(e){
   
    var mx=parseInt(e.clientX-offsetX);
    var my=parseInt(e.clientY-offsetY);
    
     dragok=true;
     for(var i=0;i<box.length;i++){
     
        
        if(mx>box[i].x && mx<box[i].x+box[i].width && my>box[i].y && my<box[i].y+box[i].height)
        {
          box[i].isDragging=true;
        }
     }
     startX=mx;
     startY=my;
}
 
function rect(r) 
{
  ctx.fillStyle=r.fill;
  ctx.fillRect(r.x,r.y,r.width,r.height);
}
 
function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    for(var i=0;i<box.length;i++)
    {
      rect(box[i]);
    }
}
main();
</script>
</body>
</html>

 

Link to post
Share on other sites
  • 1 year later...

Свойство z-index позволяет веб-мастеру управлять позициями слоёв в глубину экрана, другими словами позволяет указывать браузеру какие элементы следует показывать на переднем плане, а какие на заднем.

Значения свойства z-index:

auto - Элементы накладываются друг на друга в том порядке, каком они указаны в коде HTML. (по умолчанию).

целое число - Чем выше данное значение, тем более высокую позицию занимает элемент по отношению к тем элементам, значение которых ниже.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Member Statistics

    47,218
    Total Members
    1,451
    Most Online
    RossProxy
    Newest Member
    RossProxy
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Свежие Темы

  • Последние сообщения

    • Full-R Естественно его там быть не должно, вы ведь перепутали значения маркированного и нумерованного списка. Тот атрибут, о котором речь в теме - считается актуальным, что мне и показалось весьма странным. Перечитайте тему внимательней.
    • Здравствуйте!Простите, если не сюда пишу.Уже несколько дней не могу найти свою ошибку.Прошу помощи.Пишу сайт.Вверху страницы горизонтальное меню - фиксированное.Под горизонтальным меню вставляю видео с текстом. Видео затеняется с помощью overlay.Все вставляется, но под видео большой отступ, заполненный тенью от видео.Как убрать большой отступ?На скрине выделена область, которую необходимо убрать.Сильно не пинайте, пожалуйста, только начинаю изучать это дело.Сайт запускаю на OpenServer. В веб еще не выкладывал. Index <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Мой сайт</title> <link rel="stylesheet" type="text/css" href="style/style.css"> <link rel="stylesheet" type="text/css" href="style/style-video.css"> <link href="https://fonts.googleapis.com/css?family=Merriweather|PT+Sans+Caption:400,700&display=swap" rel="stylesheet"> <link rel="shortcut icon" type="image/x-icon" href="favicon/favicon.ico"> </head> <body> <div class="fullscreen-bg"> <div class="overlay"> <h1>Простой пример<br>фонового видео на сайте</h1> </div> <video loop="" muted="" autoplay="" poster="video/fotopromo.png" class="fullscreen-bg__video"> <source src="video/videopromo.mp4" type="video/mp4"> </video> </div> <?php include('header.php'); ?> <div class="layout"> <?php include('nav.php'); ?> <div class="content"> <h1>Название страницы</h1> <p>Бла-бла.</p> </div> </div> <?php include('footer.php'); ?> </body> </html> Style-video .fullscreen-bg { overflow: hidden; z-index: -100; position: relative; height: 100%; width: 100%; padding-top: 45%; } .fullscreen-bg__video { position: absolute; top: 0; left: 0; width: 100%; } .overlay { background: rgba(0,0,0,0.6); position: absolute; top:0; left:0; width: 100%; height: 100%; z-index: 4; } .overlay h1 { text-align:center; color:#fff; font-size: 70px; margin-top:17%; } @media (max-width: 767px) { .fullscreen-bg { background: url('../video/fotopromo.png') center center / cover no-repeat; } .fullscreen-bg__video { display: none; } .overlay h1 { font-size: 40px; } } Понимаю, что строка 7 в коде style-video отвечает за это, но не знаю как правильно ее прописать.Сейчас там прописано: padding-top:45%;При уменьшении процента, на моем экране хорошо отображается.Но что будет на других экранах?При уменьшении окна браузера, тень опять появляется.
    • Я не обратил внимания что такая глупость может быть у кого-то в мыслях.   Что нельзя делать можно проверить вот тут: Showing results for contents of text-input area - Nu Html Checker (w3.org) В общем на сам атрибут валидатор не ругается, но совершенно ясно что его тут быть не должно. Может быть для каких то скриптов это нужно, но лучше использовать атрибуты data. Они все легальные.   Даже в случае, если подразумевается стиль листа это не документировано.     В основном стилевые атрибуты остаются актуальны только для таблиц. Иногда их можно также встретить в SVG, но это уже другая история.    
  • Popular Contributors

×
×
  • Create New...