<div class="wrap">
<input type="text" id="name-user">
<label for="name-uzer">ФИО</label>
<span>С больших букв</span>
</div>
input {
display: block;
width: 200px;
border: none;
font-size: 15px;
border-bottom: 2px solid black;
}
.wrap {
padding: 30px;
position: relative;
margin: 50px;
}
label {
position: absolute;
top: 30px;
left: 30px;
font-size: 20px;
}
input:focus ~ label {
font-size: 10px;
top: 10px;
}
var elementIndex = 0
function addElement() {
if($('#box').find('span').length() === 8) {
$('#box').find('span').first().remove();
}
$("#box").append("<span class='label label_" + elementIndex + "'>test</span>");
elementIndex = (elementIndex + 1) % 8;
}
element.getBoundingClientRect().bottom
openInfoWindow(someWindow, someContent, someMarker)();
При добавлении слушателя событий — без изменений.google.maps.event.addListener(marker, 'click', function() {
openWindow(someWindow, someContent, someMarker);
});
const normalizeData = (startDate, endDate, rawData) => {
const keys = ['Imp', 'Click', 'Ctr']
const days = []
let currentDate = new Date(startDate)
const end = new Date(endDate)
while (currentDate.getTime() < end.getTime()) {
const dd = currentDate.getDate()
const mm = currentDate.getMonth() + 1
const yyyy = currentDate.getFullYear()
days.push(`${dd < 10 ? '0' + dd : dd}.${mm < 10 ? '0' + mm : mm}.${yyyy}`)
currentDate = new Date(yyyy, mm - 1, dd + 1)
}
const arrId = rawData.map(o => o.Id)
const result = {}
arrId.forEach(id => {
result[id] = days.map(date => {
const target = {date}
keys.forEach(k => target[k] = 0)
return target
})
})
arrId.forEach((id, index) => {
rawData[index].Stats.forEach(event => {
const eventData = new Date(+event.CreateDate.match(/[0-9]+/));
if (eventData.getTime() < startDate || eventData.getTime() > endDate) return null
const dd = eventData.getDate()
const mm = eventData.getMonth() + 1
const yyyy = eventData.getFullYear()
const str = `${dd < 10 ? '0' + dd : dd}.${mm < 10 ? '0' + mm : mm}.${yyyy}`
const i = days.indexOf(str);
result[id][i][event.Type] += event.Count
})
})
return result
}
// собственная реализация
Function.prototype.myCall = function(self, ...args) {
if (self === undefined) self = window;
const key = Symbol();
self[key] = this;
const result = self[key](...args);
delete self[key];
return result;
}
// тестируемая функция
var sum = function(a, b) {
return this.sum + a + b;
};
// тесты
console.log(sum.call({sum: 1}, 2, 3) === 6); // true
console.log(sum.myCall({sum: 1}, 2, 3) === 6); // true
https://maps.google.com/
и так далее//youtube.com/...
, где вначале пропущен протокол. В этом случае браузер должен установить такой же протокол как у текущей страницы, будь то http или https. Но при когда страница загружена с диска, у неё адрес типа такого file:///C:/temp/index.html
и, соответственно, ютуб и вимео с таким протоколом не загрузятся. /* помимо тех стилей что уже есть */
.hiding {
height: 0;
}
var burger = document.querySelector(".burger");
var menu = document.querySelector(".menu");
burger.addEventListener("click", function(evt) {
evt.preventDefault();
if (menu.classList.contains("show") && !menu.classList.contains("hiding")) {
menu.classList.add("hiding");
var cb = function () {
menu.classList.remove("show");
menu.classList.remove("hiding");
menu.removeEventListener("transitionend", cb, false);
};
menu.addEventListener("transitionend", cb, false);
} else {
menu.classList.add("show");
menu.classList.remove("hiding");
}
})
$(document).ready(function() {
$('input[type="checkbox"]').click(function() {
if($(this).attr('id') == 'watch') {
if (this.checked) {
$('#switch_seo').show();
} else {
$('#switch_seo').hide();
}
}
});
});
P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)
X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3