pointer-events: none
. Вот и все. postsFile = open('posts.txt','r+') # Открываем файл на чтение и запись
posts = postsFile.read().splitlines() # Читаем файл и помещаем строки в список posts
у вас будет подключение к базе данных, создание таблицы, если надоpostsFile.writelines(url+'\n') # И ссылку записываем в файл posts.txt
"use strict";
const {src, dest} = require("gulp");
const gulp = require("gulp");
const gulpCopy = require('gulp-copy');
const outputPath = "dist/";
var path = {
build: {
html: "dist/",
images: "dist/"
},
src: {
html: "src/*.html",
images: ['src/img/**/*.*']
}
}
function images() {
return src(path.src.images)
.pipe(gulpCopy(outputPath, {prefix: 1}))
.pipe(dest(path.build.images));
}
const build = gulp.series(images);
exports.images = images;
exports.default = build;
У меня чистый JS и PHP с фреймворком Laravel.Во первых - неизвестно сколько кода и какой функционал у вас в проекте. Естественно инструмент выбирают под задачу, а не наоборот.
element.hasAttribute('maxlength')
element.setAttribute('maxlength', 20)
document.querySelectorAll('input[type=password]')
forEach()
maxlength
;declare const JSON: {
id: number;
}[];
export default JSON;
:root {
--small-screen: 500px;
}
.sidebar { background: red; }
@media (max-width: var(--small-screen)) {
:root {
--small-screen: 1000px;
}
.sidebar { background: green; }
}
new
? Имхо, это перебор. Не отвалятся у вас руки три лишних символа написать, и это будет куда нагляднее чем непонятные излишние функции.function exportConstruct<P extends any[], T>(classFromExport: { new (...args: P): T; }):
(...args: P) => T {
return (...args) => new classFromExport(...args);
}
function exportCallable<T extends { new (...args: any[]): any; }>(classFromExport: T) {
return new Proxy(classFromExport, {
apply(ctor, _, args) {
return new ctor(...args);
}
}) as T & ((...args: ConstructorParameters<T>) => InstanceType<T>);
}
const Lol = exportCallable(class Lol extends BaseLol {
constructor(public name: string) {
super();
this.name = name.toUpperCase();
}
});
Lol('qwe');
abstract class Newable {
static new<P extends any[], T>(this: { new (...args: P): T; }, ...args: P): T {
return (new this(...args)) as T
}
}
class BaseLol extends Newable { /* ... */ }
class Lol extends BaseLol {
constructor(public name: string) {
super();
this.name = name.toUpperCase();
}
}
Lol.new('qwe');
const inputs = [...document.querySelectorAll('.input')];
inputs.forEach(n => n.addEventListener('input', onInput));
function onInput({ target: t }) {
if (t.value.length === t.maxLength) {
t.nextElementSibling?.focus();
}
if (inputs.every(n => n.value.length === n.maxLength)) {
// здесь дёргаете свою функцию
}
}
const Property = ({ data, onDelete }) => (
<div>
#{data.id}
<button onClick={onDelete}>Del</button>
</div>
);
const ConstructorPage = () => {
const [ properties, setProperties ] = useState([]);
const delProperty = property => setProperties(properties.filter(n => n !== property));
const addProperty = () => setProperties([
...properties,
{
id: 1 + Math.max(0, ...properties.map(n => n.id)),
},
]);
return (
<>
<button onClick={addProperty}>Add</button>
{properties.map(n => (
<Property
key={n.id}
data={n}
onDelete={() => delProperty(n)}
/>
))}
</>
);
};