日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

html5 元素重叠,javascript – 检查两个或多个DOM元素是否重叠

發布時間:2024/9/19 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html5 元素重叠,javascript – 检查两个或多个DOM元素是否重叠 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在查看代碼之后,當您從開始和結束時間開始處理時,檢查渲染的元素是否過于復雜似乎過于復雜.

我這樣做的方法是將碰撞在數組中的事件分組,如下所示:

let collisions = [

// only 1 event in this array so no collisions

[{

start: 30,

end: 120

}],

// 3 events in this array which have overlapping times

[{

start: 300,

end: 330

}, {

start: 290,

end: 330

}, {

start: 300,

end: 330

}]

];

然后我們遍歷每組碰撞,并創建具有適當寬度和位置的元素.

for (var i = 0; i < collisions.length; i++) {

var collision = collisions[i];

for (var j = 0; j < collision.length; j++) {

var event = collision[j];

let height = event.end - event.start;

let top = event.start + 50;

// 360 = max width of event

let width = 360 / collision.length;

// a lot of this could be moved into a css class

// I removed the "display: inline-block" code because these are absolutely positioned. Replaced it with "left: (j * width)px"

let div = $(`

`).css('position', 'absolute').css('top', top)

.css('height', height).css('width', width).css('left', (j * width) + 'px')

.css('backgroundColor', arrayOfColors.shift()).addClass('event')

.text('New Event').css('fontWeight', 'bold');

// append event div to parent container

$('#events').append(div);

}

}

//**********************************************************************

//

// TITLE - Thought Machine Coding Challenge, Single Day Calendar

// AUTHOR - DOUGLAS WISSETT WALKER

// DATE - 21/04/2016

// VERSION - 0.0.3

// PREVIOUS - 0.0.2

//

//**********************************************************************

let arr = [{

start: 30,

end: 120

}, {

start: 70,

end: 180

}, {

start: 80,

end: 190

}, {

start: 300,

end: 330

}, {

start: 290,

end: 330

}, {

start: 220,

end: 260

}, {

start: 220,

end: 260

}, {

start: 220,

end: 260

}, {

start: 220,

end: 260

}, {

start: 400,

end: 440

}, {

start: 20,

end: 200

}];

let renderDay;

$(document).ready(() => {

renderDay = function(array) {

$('.event').each(function(i, el) {

$(el).remove();

});

// background colors for events

let arrayOfColors = [

'rgba(255, 153, 153, 0.75)',

'rgba(255, 204, 153, 0.75)',

'rgba(204, 255, 153, 0.75)',

'rgba(153, 255, 255, 0.75)',

'rgba(153, 153, 255, 0.75)',

'rgba(255, 153, 255, 0.75)'

]

let collisions = mapCollisions(array);

let eventCount = 0; // used for unique id

for (let i = 0; i < collisions.length; i++) {

let collision = collisions[i];

for (let j = 0; j < collision.length; j++) {

let event = collision[j];

let height = event.end - event.start;

let top = event.start + 50;

// 360 = max width of event

let width = 360 / collision.length;

// a lot of this could be moved into a css class

// I removed the "display: inline-block" code because these are absolutely positioned

// Replaced it with "left: (j * width)px"

let div = $("

").css('position', 'absolute').css('top', top)

.css('height', height).css('width', width).css('left', (j * width) + 'px')

.css('backgroundColor', arrayOfColors.shift()).addClass('event')

.text('New Event').css('fontWeight', 'bold');

eventCount++;

// append event div to parent container

$('#events').append(div);

}

}

}

renderDay(arr);

});

// Sorry this is pretty messy and I'm not familiar with ES6/Typescript or whatever you are using

function mapCollisions(array) {

let collisions = [];

for (let i = 0; i < array.length; i++) {

let event = array[i];

let collides = false;

// for each group of colliding events, check if this event collides

for (let j = 0; j < collisions.length; j++) {

let collision = collisions[j];

// for each event in a group of colliding events

for (let k = 0; k < collision.length; k++) {

let collidingEvent = collision[k]; // event which possibly collides

// Not 100% sure if this will catch all collisions

if (

event.start >= collidingEvent.start && event.start < collidingEvent.end || event.end <= collidingEvent.end && event.end > collidingEvent.start || collidingEvent.start >= event.start && collidingEvent.start < event.end || collidingEvent.end <= event.end && collidingEvent.end > event.start) {

collision.push(event);

collides = true;

break;

}

}

}

if (!collides) {

collisions.push([event]);

}

}

console.log(collisions);

return collisions;

}

html,

body {

margin: 0;

padding: 0;

font-family: sans-serif;

}

#container {

height: 100%;

width: 100%;

}

#header-title {

text-align: center;

}

#calendar {

width: 400px;

height: 620px;

margin-top: 70px;

}

#events {

position: absolute;

top: 80px;

left: 100px;

width: 800px;

height: 620px;

}

.event {

box-shadow: 0 0 20px black;

border-radius: 5px;

}

.hr-block {

border-top: 2px solid black;

height: 58px;

margin: 0;

padding: 0;

margin-left: 100px;

min-width: 360px;

opacity: .5;

}

.hr-header {

position: relative;

top: -33px;

left: -68px;

}

Thought Machine Code Challenge

09:00

10:00

11:00

12:00

13:00

14:00

15:00

16:00

17:00

18:00

document.getElementById("header-title").innerHTML = moment().calendar();

總結

以上是生活随笔為你收集整理的html5 元素重叠,javascript – 检查两个或多个DOM元素是否重叠的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。