#1
展开↯#2
作者:广西南宁市
图片拖曳排序
#,广西南宁市,2025-11-16,06:15:46, #,广西南宁市,2025-11-16,08:12:24, #,广西南宁市,2025-11-16,08:17:17,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Drag and Drop Image Sorting</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f9;
margin: 0;
padding: 20px;
}
.container {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.item {
margin: 10px;
cursor: grab;
transition: transform 0.2s ease, opacity 0.2s ease;
}
.item img {
width: 100px;
height: 100px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.dragging {
opacity: 0.5;
transform: scale(1.1);
}
.placeholder {
width: 100px;
height: 100px;
border: 2px dashed #ccc;
border-radius: 8px;
background-color: #f9f9f9;
}
#order-info {
margin-top: 20px;
font-size: 16px;
color: #333;
}
</style>
</head>
<body>
<h1>Drag and Drop Image Sorting</h1>
<div class="container">
<div class="item" draggable="true" data-id="1"><img src="image1.jpg" alt="Image 1"></div>
<div class="item" draggable="true" data-id="2"><img src="image2.jpg" alt="Image 2"></div>
<div class="item" draggable="true" data-id="3"><img src="image3.jpg" alt="Image 3"></div>
<div class="item" draggable="true" data-id="4"><img src="image4.jpg" alt="Image 4"></div>
</div>
<div id="order-info"></div>
<script>
const container = document.querySelector('.container');
const orderInfo = document.getElementById('order-info');
let dragItem = null;
container.addEventListener('dragstart', function(e) {
dragItem = e.target;
setTimeout(() => {
dragItem.classList.add('dragging');
}, 0);
});
container.addEventListener('dragend', function(e) {
dragItem.classList.remove('dragging');
dragItem = null;
updateOrderInfo();
});
container.addEventListener('dragover', function(e) {
e.preventDefault();
const afterElement = getDragAfterElement(container, e.clientX);
const currentElement = document.querySelector('.dragging');
if (afterElement == null) {
container.appendChild(currentElement);
} else {
container.insertBefore(currentElement, afterElement);
}
});
function getDragAfterElement(container, x) {
const draggableElements = [...container.querySelectorAll('.item:not(.dragging)')];
return draggableElements.reduce((closest, child) => {
const box = child.getBoundingClientRect();
const offset = x - box.left - box.width / 2;
if (offset < 0 && offset > closest.offset) {
return { offset: offset, element: child };
} else {
return closest;
}
}, { offset: Number.NEGATIVE_INFINITY }).element;
}
function updateOrderInfo() {
const items = container.querySelectorAll('.item');
const order = Array.from(items).map(item => item.getAttribute('data-id'));
orderInfo.textContent = `Current Order: ${order.join(', ')}`;
}
// Initial order info
updateOrderInfo();
</script>
</body>
</html>Run code
Cut to clipboard
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>图片拖曳排序</title>
<style>
/* 基础样式与变量 */
:root {
--primary: #3B82F6;
--secondary: #10B981;
--neutral: #64748B;
--gray-100: #F3F4F6;
--gray-600: #4B5563;
--gray-800: #1F2937;
--black-60: rgba(0, 0, 0, 0.6);
--white-80: rgba(255, 255, 255, 0.8);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Inter', sans-serif;
}
body {
background-color: var(--gray-100);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px 16px;
}
header {
text-align: center;
margin-bottom: 32px;
}
h1 {
font-size: clamp(1.8rem, 4vw, 2.5rem);
font-weight: bold;
color: var(--gray-800);
margin-bottom: 8px;
}
header p {
color: var(--neutral);
font-size: 1.125rem;
}
/* 图片画廊样式 */
#imageGallery {
display: grid;
grid-template-columns: 1fr;
gap: 24px;
margin-bottom: 40px;
}
@media (min-width: 640px) {
#imageGallery {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 768px) {
#imageGallery {
grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 1024px) {
#imageGallery {
grid-template-columns: repeat(4, 1fr);
}
}
.image-container {
position: relative;
overflow: hidden;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
cursor: move;
}
.image-container:hover {
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
}
.image-container img {
width: 100%;
height: 192px;
object-fit: cover;
}
.image-container .caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background-color: var(--black-60);
color: white;
padding: 8px;
font-size: 0.875rem;
}
.image-container .drag-icon {
position: absolute;
top: 8px;
right: 8px;
background-color: var(--white-80);
border-radius: 50%;
padding: 4px;
}
/* 拖放相关样式 */
.drag-placeholder {
background-color: rgba(59, 130, 246, 0.2);
border: 2px dashed var(--primary);
border-radius: 8px;
}
.drag-active {
opacity: 0.5;
transform: scale(0.95);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
/* 顺序显示区域 */
.order-display {
background-color: white;
padding: 24px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.order-display h2 {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 16px;
color: var(--gray-800);
}
.order-display p {
color: var(--gray-600);
line-height: 1.5;
}
</style>
</head>
<body>
<div class="container">
<header>
<h1>图片拖曳排序</h1>
<p>拖放图片可以重新排列它们的顺序</p>
</header>
<div id="imageGallery">
<!-- 图片将通过JavaScript动态加载 -->
</div>
<div class="order-display">
<h2>当前顺序</h2>
<p id="orderOutput">拖动图片后将显示新的顺序</p>
</div>
</div>
<script>
// 示例图片数据
const images = [
{ id: 1, url: 'https://picsum.photos/seed/img1/400/300', alt: '风景图片 1' },
{ id: 2, url: 'https://picsum.photos/seed/img2/400/300', alt: '风景图片 2' },
{ id: 3, url: 'https://picsum.photos/seed/img3/400/300', alt: '风景图片 3' },
{ id: 4, url: 'https://picsum.photos/seed/img4/400/300', alt: '风景图片 4' },
{ id: 5, url: 'https://picsum.photos/seed/img5/400/300', alt: '风景图片 5' },
{ id: 6, url: 'https://picsum.photos/seed/img6/400/300', alt: '风景图片 6' },
{ id: 7, url: 'https://picsum.photos/seed/img7/400/300', alt: '风景图片 7' },
{ id: 8, url: 'https://picsum.photos/seed/img8/400/300', alt: '风景图片 8' }
];
const gallery = document.getElementById('imageGallery');
const orderOutput = document.getElementById('orderOutput');
let draggedItem = null;
// 初始化画廊
function initGallery() {
images.forEach(img => addImageToGallery(img));
updateOrderDisplay();
}
// 添加图片到画廊
function addImageToGallery(image) {
const div = document.createElement('div');
div.className = 'image-container';
div.draggable = true;
div.dataset.id = image.id;
// 用简单符号替代Font Awesome图标
div.innerHTML = `
<img src="${image.url}" alt="${image.alt}">
<div class="caption">${image.alt}</div>
<div class="drag-icon">↔</div>
`;
// 添加拖放事件监听
div.addEventListener('dragstart', handleDragStart);
div.addEventListener('dragover', handleDragOver);
div.addEventListener('dragenter', handleDragEnter);
div.addEventListener('dragleave', handleDragLeave);
div.addEventListener('drop', handleDrop);
div.addEventListener('dragend', handleDragEnd);
gallery.appendChild(div);
}
// 拖放事件处理函数
function handleDragStart(e) {
draggedItem = this;
// 添加拖动时的视觉效果
setTimeout(() => {
this.classList.add('drag-active');
}, 0);
// 设置拖动数据
e.dataTransfer.setData('text/plain', this.dataset.id);
}
function handleDragOver(e) {
e.preventDefault(); // 允许放置
}
function handleDragEnter(e) {
e.preventDefault();
if (this !== draggedItem) {
this.classList.add('drag-placeholder');
}
}
function handleDragLeave() {
this.classList.remove('drag-placeholder');
}
function handleDrop(e) {
e.preventDefault();
this.classList.remove('drag-placeholder');
if (this !== draggedItem) {
// 获取所有图片容器
const children = Array.from(gallery.children);
const draggedIndex = children.indexOf(draggedItem);
const dropIndex = children.indexOf(this);
// 重新排列图片
if (draggedIndex < dropIndex) {
gallery.insertBefore(draggedItem, this.nextSibling);
} else {
gallery.insertBefore(draggedItem, this);
}
// 更新顺序显示
updateOrderDisplay();
}
}
function handleDragEnd() {
// 移除所有拖动相关的类
this.classList.remove('drag-active');
Array.from(gallery.children).forEach(child => {
child.classList.remove('drag-placeholder');
});
}
// 更新顺序显示
function updateOrderDisplay() {
const order = Array.from(gallery.children).map(item => item.dataset.id);
orderOutput.textContent = `图片ID顺序: ${order.join(' → ')}`;
}
// 初始化
document.addEventListener('DOMContentLoaded', initGallery);
</script>
</body>
</html>Run code
Cut to clipboard
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Sorting with Drag and Arrows</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f9;
margin: 0;
padding: 20px;
}
.container {
display: flex;
align-items: center;
gap: 10px;
}
.item {
margin: 10px;
cursor: grab;
transition: transform 0.3s ease;
}
.item img {
width: 100px;
height: 100px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.arrow {
font-size: 24px;
cursor: pointer;
user-select: none;
}
#order-info {
margin-top: 20px;
font-size: 16px;
color: #333;
}
.item.dragging {
opacity: 0.5;
}
</style>
</head>
<body>
<h1>Image Sorting with Drag and Arrows</h1>
<div class="container">
<div class="arrow" id="left-arrow">◀</div>
<div class="item" data-id="1" draggable="true"><img src="image1.jpg" alt="Image 1"></div>
<div class="item" data-id="2" draggable="true"><img src="image2.jpg" alt="Image 2"></div>
<div class="item" data-id="3" draggable="true"><img src="image3.jpg" alt="Image 3"></div>
<div class="item" data-id="4" draggable="true"><img src="image4.jpg" alt="Image 4"></div>
<div class="arrow" id="right-arrow">▶</div>
</div>
<div id="order-info"></div>
<script>
const container = document.querySelector('.container');
const leftArrow = document.getElementById('left-arrow');
const rightArrow = document.getElementById('right-arrow');
const orderInfo = document.getElementById('order-info');
let currentIndex = 0;
// Function to move the current item to the right
function moveRight() {
const items = container.querySelectorAll('.item');
if (currentIndex < items.length - 1) {
const item = items[currentIndex];
const nextItem = items[currentIndex + 1];
container.insertBefore(item, nextItem.nextSibling);
currentIndex++;
} else {
currentIndex = 0;
moveRight();
}
updateOrderInfo();
}
// Function to move the current item to the left
function moveLeft() {
const items = container.querySelectorAll('.item');
if (currentIndex > 0) {
const item = items[currentIndex];
const prevItem = items[currentIndex - 1];
container.insertBefore(item, prevItem);
currentIndex--;
} else {
currentIndex = items.length - 1;
moveLeft();
}
updateOrderInfo();
}
// Function to update the order info
function updateOrderInfo() {
const items = container.querySelectorAll('.item');
const order = Array.from(items).map(item => item.getAttribute('data-id'));
orderInfo.textContent = `Current Order: ${order.join(', ')}`;
}
// Add drag and drop functionality
let draggedItem = null;
container.addEventListener('dragstart', (e) => {
if (e.target.classList.contains('item')) {
draggedItem = e.target;
e.target.classList.add('dragging');
}
});
container.addEventListener('dragover', (e) => {
e.preventDefault();
const targetItem = e.target.closest('.item');
if (targetItem && targetItem !== draggedItem) {
const items = Array.from(container.querySelectorAll('.item'));
const draggedIndex = items.indexOf(draggedItem);
const targetIndex = items.indexOf(targetItem);
if (draggedIndex < targetIndex) {
container.insertBefore(draggedItem, targetItem.nextSibling);
} else {
container.insertBefore(draggedItem, targetItem);
}
}
});
container.addEventListener('dragend', (e) => {
if (e.target.classList.contains('item')) {
e.target.classList.remove('dragging');
updateOrderInfo();
}
});
// Add arrow click events
leftArrow.addEventListener('click', moveLeft);
rightArrow.addEventListener('click', moveRight);
// Update order info initially
updateOrderInfo();
</script>
</body>
</html>Run code
Cut to clipboard
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Sorting with Drag and Arrows</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f9;
margin: 0;
padding: 20px;
}
.container {
display: flex;
align-items: center;
gap: 10px;
}
.item {
margin: 10px;
cursor: grab;
transition: transform 0.3s ease;
}
.item img {
width: 100px;
height: 100px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.arrow {
font-size: 24px;
cursor: pointer;
user-select: none;
}
#order-info {
margin-top: 20px;
font-size: 16px;
color: #333;
}
.item.dragging {
opacity: 0.5;
}
.item.selected {
border: 2px solid #007bff;
}
</style>
</head>
<body>
<h1>Image Sorting with Drag and Arrows</h1>
<div class="container">
<div class="arrow" id="left-arrow">◀</div>
<div class="item" data-id="1" draggable="true"><img src="image1.jpg" alt="Image 1"></div>
<div class="item" data-id="2" draggable="true"><img src="image2.jpg" alt="Image 2"></div>
<div class="item" data-id="3" draggable="true"><img src="image3.jpg" alt="Image 3"></div>
<div class="item" data-id="4" draggable="true"><img src="image4.jpg" alt="Image 4"></div>
<div class="item" data-id="5" draggable="true"><img src="image5.jpg" alt="Image 5"></div>
<div class="arrow" id="right-arrow">▶</div>
</div>
<div id="order-info"></div>
<script>
const container = document.querySelector('.container');
const leftArrow = document.getElementById('left-arrow');
const rightArrow = document.getElementById('right-arrow');
const orderInfo = document.getElementById('order-info');
let selectedItem = null;
// Function to move the selected item to the right
function moveRight() {
if (selectedItem) {
const items = container.querySelectorAll('.item');
const index = Array.from(items).indexOf(selectedItem);
if (index < items.length - 1) {
container.insertBefore(selectedItem, items[index + 1].nextSibling);
}
updateOrderInfo();
}
}
// Function to move the selected item to the left
function moveLeft() {
if (selectedItem) {
const items = container.querySelectorAll('.item');
const index = Array.from(items).indexOf(selectedItem);
if (index > 0) {
container.insertBefore(selectedItem, items[index - 1]);
}
updateOrderInfo();
}
}
// Function to update the order info
function updateOrderInfo() {
const items = container.querySelectorAll('.item');
const order = Array.from(items).map(item => item.getAttribute('data-id'));
orderInfo.textContent = `Current Order: ${order.join(', ')}`;
}
// Add click event to select an item
container.addEventListener('click', (e) => {
const clickedItem = e.target.closest('.item');
if (clickedItem) {
if (selectedItem) {
selectedItem.classList.remove('selected');
}
selectedItem = clickedItem;
selectedItem.classList.add('selected');
}
});
// Add drag and drop functionality
let draggedItem = null;
container.addEventListener('dragstart', (e) => {
if (e.target.classList.contains('item')) {
draggedItem = e.target;
e.target.classList.add('dragging');
}
});
container.addEventListener('dragover', (e) => {
e.preventDefault();
const targetItem = e.target.closest('.item');
if (targetItem && targetItem !== draggedItem) {
const items = Array.from(container.querySelectorAll('.item'));
const draggedIndex = items.indexOf(draggedItem);
const targetIndex = items.indexOf(targetItem);
if (draggedIndex < targetIndex) {
container.insertBefore(draggedItem, targetItem.nextSibling);
} else {
container.insertBefore(draggedItem, targetItem);
}
}
});
container.addEventListener('dragend', (e) => {
if (e.target.classList.contains('item')) {
e.target.classList.remove('dragging');
updateOrderInfo();
}
});
// Add arrow click events
leftArrow.addEventListener('click', moveLeft);
rightArrow.addEventListener('click', moveRight);
// Update order info initially
updateOrderInfo();
</script>
</body>
</html>Run code
Cut to clipboard
文章:php redis 学习笔记 发表时间:2025-11-16, 05:48:46
#3
作者:广西南宁市
关键字:amy aderssen
#,广西南宁市,2025-10-13,13:02:08, Anal had the way..
feed me

#,广西南宁市,2025-10-18,05:11:50, 設楽ゆうひ
#,浙江省台州市,2025-10-21,04:00:43,@2 , 这是哪一部?
#,广西南宁市,2025-10-23,01:42:10, VSPDS-574,一开头就是
RCT-072 (一小时三十五分 情节一样,但是跟图片中有略微不同)可自行查阅
#,广西南宁市,2025-10-23,01:42:56, 
#,广西南宁市,2025-10-23,04:55:37, 
#,广西南宁市,2025-10-23,04:56:50, 
#,广西南宁市,2025-10-23,08:49:54, 
#,广西南宁市,2025-10-28,13:41:51, 
#,广西南宁市,2025-11-02,05:44:23, 
#,广西南宁市,2025-11-02,06:19:15, #,广西南宁市,2025-11-09,01:27:11, A栋D层N号房,705号住户 武藤彩香vs大岛丈
feed me
codeRun code
Cut to clipboard
RCT-072 (一小时三十五分 情节一样,但是跟图片中有略微不同)可自行查阅
文章:webman上传文件到非public目录 发表时间:2025-10-13, 12:59:01
#4
作者:广西南宁市
MIDV581
FC2素人被挖掘之后签约的公司,步兵时候就很不错,明显高一个档次
曾用座机号码2701833是么?
#,广西,2025-08-06,01:34:55, 《花月容貌》 (Young And Beautiful / Jeune et Jolie)是一部以令人深思的手法,探讨早熟少女对性态度的法国电影。本片叙述一名17岁少女主要对于青春期所带来的变化与冲击,加上家庭与当时社会的影响之下,少女伊莎贝尔借着援交展开了摸索人生以及与众不同的成长史。由弗朗索瓦·欧容所指导,法国新星玛琳·华特(Marine Vacth)主演,为第66届戛纳电影节竞赛片
#,广西,2025-08-06,01:35:14, #,广西南宁市,2025-08-15,01:50:56, 星宫老师的SSNI-830
#,广西南宁市,2025-08-15,01:54:09, https://njavtv.com/dm13/ms/mcsr-250 #,广西南宁市,2025-08-26,23:26:36, real-711
#,广西南宁市,2025-08-26,23:28:25, MIDE-239
#,广西南宁市,2025-08-27,00:04:09, [ホワイティッシュ・ブラッカー (ANDO人)] 濃厚アンドロイド性活 PLAYBOT
#,广西南宁市,2025-08-27,06:08:03, https://njavtv.com/ms/ekdv-771
https://avjoy.me/video/72332/ekdv-771 #,广西南宁市,2025-08-27,09:07:28,
如果有喜欢这类型的,我推荐 mimk的138集 #,广西南宁市,2025-09-03,09:06:31, #,广西南宁市,2025-09-03,09:11:07, #,广西南宁市,2025-09-03,11:59:12, 
#,广西南宁市,2025-09-03,12:00:50, 
#,广西南宁市,2025-09-03,17:13:55, 


#,广西,2025-09-09,20:43:48, 
#,浙江省台州市,2025-10-21,03:50:47,@7 , 这是哪一部? #,浙江省台州市,2025-10-21,04:01:48,@7 , 这是哪一部没找到
FC2素人被挖掘之后签约的公司,步兵时候就很不错,明显高一个档次
曾用座机号码2701833是么?
文章:webman上传文件到非public目录 发表时间:2025-07-07, 20:54:56
#5
作者:广西南宁市
長濱ねる
#,广西南宁市,2025-09-13,02:38:21, 天木じゅん #,广西南宁市,2025-09-13,02:39:43, 
#,广西南宁市,2025-09-20,10:10:48, #,广西南宁市,2025-09-20,13:07:25, 号码有误,不是534,而是634
水原美园 水原みその

#,广西南宁市,2025-09-20,13:13:16, hunt开头的题材是真的搞
#,广西南宁市,2025-09-20,13:25:31, huntb-634 #,广西南宁市,2025-09-20,13:43:52, 

#,广西南宁市,2025-09-20,14:08:38, 
#,广西南宁市,2025-09-26,03:57:48, D-ass187
这两位老师共演的HSODA号003牌电影简直是神作
、
#,广西南宁市,2025-09-26,04:19:49, 沙发那么低,你得跪着,不如桌上,站着就能把*给*了
#,广西南宁市,2025-09-26,06:03:02, magnet:?xt=urn:btih:4f1a380a1f261e661837f659d8c8325d664fe045&dn=[javdb.com]IPX-819-UC.torrent.无码破解
magnet:?xt=urn:btih:ce26f37ef3d294dc8fc3a6da722e917636325ced&dn=[javdb.com]fsdss-185-C.torrent
magnet:?xt=urn:btih:81b4949d37ac2c89d912de486575db99e57d8552&dn=[javdb.com]jul-275-C.torrent
magnet:?xt=urn:btih:9a403aff1627ab1bce7e53bd7ce3a069f0bdd670&dn=[javdb.com]mide-955-C.torrent
magnet:?xt=urn:btih:0a4efef7f8c5fc2a4f2f21d408a1017a0c59fd1c&dn=[javdb.com]ssni-929-C.torrent
magnet:?xt=urn:btih:71dc6c165e044be55ab9098ee4b626aa1d20ea1e&dn=[javdb.com]MIDE-742-U.torrent.无码破解
magnet:?xt=urn:btih:29d3d4ca595218b9e4116fd72b11e6ac0a5ed5db&dn=[javdb.com]ROYD-005.mp4
magnet:?xt=urn:btih:fa809865c933ec4dfe9b7a74aad5a3394c666982&dn=[javdb.com]cawd-177.torrent
magnet:?xt=urn:btih:91503b503fbe134f86410b4daca96b5b7205e92a&dn=[javdb.com]ebod-874-C.torrent
magnet:?xt=urn:btih:176940ef41f4d063c66379e4c06bed45935bb572&dn=[javdb.com]ipx-616-C.torrent
#,广西南宁市,2025-09-26,06:03:30, ipx819 fsdss185 jul275 mide955 ssni929 mide742 rpyd005 cawd177 ebod874 ipx616 #,广西南宁市,2025-09-26,07:30:21, 
#,广西南宁市,2025-10-03,17:17:56, DASD883/SSNI802
#,广西南宁市,2025-10-03,17:18:25, 给上面的做个总结
DASD-883
SSNI-181
SSNI-802
PRED-226 #,广西南宁市,2025-10-03,17:37:49, miaa-794 天川そら 本田もも
#,广西南宁市,2025-10-03,17:38:41, ねえワタナベ君cポルノ映画館で私がいちばん好きなもの何か知ってる #,广西南宁市,2025-10-03,17:44:24, 
#,广西南宁市,2025-10-03,17:46:29, 
#,广西南宁市,2025-10-03,17:51:00, 
#,广西南宁市,2025-10-04,18:03:07, ABP-975
水原美园 水原みその
这两位老师共演的HSODA号003牌电影简直是神作
、
magnet:?xt=urn:btih:ce26f37ef3d294dc8fc3a6da722e917636325ced&dn=[javdb.com]fsdss-185-C.torrent
magnet:?xt=urn:btih:81b4949d37ac2c89d912de486575db99e57d8552&dn=[javdb.com]jul-275-C.torrent
magnet:?xt=urn:btih:9a403aff1627ab1bce7e53bd7ce3a069f0bdd670&dn=[javdb.com]mide-955-C.torrent
magnet:?xt=urn:btih:0a4efef7f8c5fc2a4f2f21d408a1017a0c59fd1c&dn=[javdb.com]ssni-929-C.torrent
magnet:?xt=urn:btih:71dc6c165e044be55ab9098ee4b626aa1d20ea1e&dn=[javdb.com]MIDE-742-U.torrent.无码破解
magnet:?xt=urn:btih:29d3d4ca595218b9e4116fd72b11e6ac0a5ed5db&dn=[javdb.com]ROYD-005.mp4
magnet:?xt=urn:btih:fa809865c933ec4dfe9b7a74aad5a3394c666982&dn=[javdb.com]cawd-177.torrent
magnet:?xt=urn:btih:91503b503fbe134f86410b4daca96b5b7205e92a&dn=[javdb.com]ebod-874-C.torrent
magnet:?xt=urn:btih:176940ef41f4d063c66379e4c06bed45935bb572&dn=[javdb.com]ipx-616-C.torrent
DASD-883
SSNI-181
SSNI-802
PRED-226
文章:webman上传文件到非public目录 发表时间:2025-09-13, 02:30:17
#6
作者:广西南宁市
“十五岁那年已经不稀罕五岁时朝思暮想的玩具 哪敢断论二十七岁时还会稀罕十七岁未得到的爱人” #,广西南宁市,2017-05-16,11:55:30, 186776 82824 #,广西河池市宜州市,2018-02-23,15:56:42, 七牛winwin@lizhenqiu.com #,广西河池市宜州市,2018-08-28,12:25:30, 个人简历.doc #,广西河池市宜州市,2018-08-28,12:35:35, 个人简历 (2).doc #,广西南宁市,2018-09-20,10:25:00, 个人简历 (2).doc #,广西南宁市,2018-10-09,14:20:22, 个人简历 (1).doc #,广西南宁市,2020-03-04,00:37:20, 个人简历 (1).doc #,广西南宁市青秀区,2022-04-01,02:46:56, 李振球的简历.docx #,广西南宁市,2025-09-26,13:17:36, 个人简历 (1) (1).doc
文章:成功的故事只能倒叙着讲 发表时间:2016-03-04, 10:10:53
#7
作者:广西
ngod-122
美乃雀DLDSS-010
DLDSS-025
DLDSS-035
DLDSS-052
DLDSS-056
DLDSS-048
DLDSS-211
DLDSS-187
DLDSS-180
DLDSS-030
DLDSS-369
DLDSS-344
DLDSS-389
DLDSS-390
DLDSS-396
DLDSS-392
桜空もも——IPX-900
楓カレン——IPX-724
美乃すずめ——DLDSS-121
神菜美まい——IPX-928
明里つむぎ——JUQ-138
白峰ミウ——SAME-013
相沢みなみ——IPX-177
凪ひかる——SSIS-742
あまつか亜夢——IPX-607
一乃あおい——JUQ-096
文章:webman上传文件到非public目录 发表时间:2025-06-15, 03:59:30
#8
作者:广西崇左市
magnet:?xt=urn:btih:9037D47F1A1959E1B6BE9FBD142DA4BE6D13FFE8Run code
Cut to clipboard
Holly Bunny / Hoolybunny (ig: hooly.bu), 不是那个"Bunny Marthy",
扶她本
dandy-342
dandy-237
dandy-462
avop-108
dandy-368
avop-062
裸之大陆十一部
nhdta-286
dandy-261
nhdt-959
nhdt-911
nhdt-783
nhdt-704
nhdt-634
nhdt-548
nhdt-423
nhdt-379
open-654
slut whores
文章:webman上传文件到非public目录 发表时间:2025-05-15, 11:40:05
#10
作者:广西南宁市
main.js:46 [Vue warn]: Extraneous non-emits event listeners (editFormWatch) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option. at <Table key=1 onEditFormWatch=fn parentC=
原因为 监听函数有大写和-
@editForm-watch="editFormWatch"
改为 @editform-watch
额外的非发射事件侦听器(queryList、closeDialog)已传递给组件,但由于组件呈现片段或文本根节点,因此无法自动继承。如果侦听器仅作为组件自定义事件侦听器,请使用“emits”选项声明它。
查了资料才发现是因为子组件调用父组件的方法时有点不一样
之前是这样的:
const emit = defineEmits();
emit("queryList");
emit("closeDialog");
修改:
const emit = defineEmits(["queryList","closeDialog"]);
emit("queryList");
emit("closeDialog");
把父组件内的方法再在defineEmits里面声明一遍就可以了
文章:webman上传文件到非public目录 发表时间:2025-05-06, 15:01:17
#12
作者:湖北省武汉市
新商户只能用公钥,不能用证书了,这个怎么处理呀 #,广西崇左市,2025-03-05,22:20:39, 根据微信支付的最新政策,新商户在接入微信支付时,只能使用公钥进行签名和验证,而不再支持使用证书。这一变化主要是为了提高支付接口的安全性和简化开发流程。对于开发者来说,处理方式如下:
1. 确认使用公钥模式
在接入微信支付时,确保选择公钥模式(RSA 或 RSA2)进行签名和验证。微信支付官方文档会提供详细的公钥生成和使用方法。
2. 生成公钥和私钥
使用工具生成 RSA 密钥对(公钥和私钥)。
将生成的公钥上传到微信商户平台。
保留好私钥,用于在本地生成签名。
生成密钥对的工具:
OpenSSL
在线生成工具(注意安全性)
编程语言中的加密库(如 Python 的 cryptography 库)
生成 RSA 密钥对的命令(OpenSSL):
3. 上传公钥到微信商户平台
登录微信商户平台,进入「API安全」页面。
找到「API 密钥」或「公钥管理」,将生成的 public_key.pem 文件内容上传。
4. 在代码中使用私钥进行签名
在开发过程中,使用本地保存的私钥对请求数据进行签名。
将签名结果作为请求参数发送给微信支付 API。
Python 示例:
5. 验证微信支付的回调
当微信支付回调时,使用微信支付提供的公钥验证回调数据的签名。
确保回调数据未被篡改。
Python 示例:
6. 注意事项
私钥安全:私钥是核心敏感数据,必须妥善保管,切勿泄露。
公钥格式:上传到微信商户平台的公钥必须是 PEM 格式。
签名算法:微信支付支持 RSA 和 RSA2 算法,推荐使用 RSA2(SHA-256)。
版本兼容性:确保使用的 SDK 或库支持公钥模式。
7. 参考文档
微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
微信支付 API 安全指南:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml
通过以上步骤,你可以顺利完成微信支付的公钥模式接入。如果遇到问题,可以参考微信支付官方文档或联系微信支付技术支持。
1. 确认使用公钥模式
在接入微信支付时,确保选择公钥模式(RSA 或 RSA2)进行签名和验证。微信支付官方文档会提供详细的公钥生成和使用方法。
2. 生成公钥和私钥
使用工具生成 RSA 密钥对(公钥和私钥)。
将生成的公钥上传到微信商户平台。
保留好私钥,用于在本地生成签名。
生成密钥对的工具:
OpenSSL
在线生成工具(注意安全性)
编程语言中的加密库(如 Python 的 cryptography 库)
生成 RSA 密钥对的命令(OpenSSL):
# 生成私钥
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
# 从私钥中提取公钥
openssl rsa -in private_key.pem -pubout -out public_key.pemRun code
Cut to clipboard
3. 上传公钥到微信商户平台
登录微信商户平台,进入「API安全」页面。
找到「API 密钥」或「公钥管理」,将生成的 public_key.pem 文件内容上传。
4. 在代码中使用私钥进行签名
在开发过程中,使用本地保存的私钥对请求数据进行签名。
将签名结果作为请求参数发送给微信支付 API。
Python 示例:
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import serialization
# 加载私钥
with open("private_key.pem", "rb") as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None
)
# 待签名字符串
data_to_sign = "your_data_to_sign"
# 生成签名
signature = private_key.sign(
data_to_sign.encode('utf-8'),
padding.PKCS1v15(),
hashes.SHA256()
)
# 将签名转换为 Base64 编码
import base64
signature_base64 = base64.b64encode(signature).decode('utf-8')
print("Signature:", signature_base64)Run code
Cut to clipboard
5. 验证微信支付的回调
当微信支付回调时,使用微信支付提供的公钥验证回调数据的签名。
确保回调数据未被篡改。
Python 示例:
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import serialization
# 加载微信支付的公钥
with open("wechat_public_key.pem", "rb") as key_file:
public_key = serialization.load_pem_public_key(
key_file.read()
)
# 回调数据和签名
callback_data = "your_callback_data"
received_signature = base64.b64decode("received_signature_base64")
# 验证签名
try:
public_key.verify(
received_signature,
callback_data.encode('utf-8'),
padding.PKCS1v15(),
hashes.SHA256()
)
print("Signature is valid")
except Exception as e:
print("Signature is invalid:", e)Run code
Cut to clipboard
6. 注意事项
私钥安全:私钥是核心敏感数据,必须妥善保管,切勿泄露。
公钥格式:上传到微信商户平台的公钥必须是 PEM 格式。
签名算法:微信支付支持 RSA 和 RSA2 算法,推荐使用 RSA2(SHA-256)。
版本兼容性:确保使用的 SDK 或库支持公钥模式。
7. 参考文档
微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
微信支付 API 安全指南:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml
通过以上步骤,你可以顺利完成微信支付的公钥模式接入。如果遇到问题,可以参考微信支付官方文档或联系微信支付技术支持。
文章:PHP 微信支付V3 发表时间:2025-03-05, 14:56:03
#13
作者:广西百色市
html5手机键盘修改换行为提交文字
h5修改软键盘文字,将换行改为前往或发送
在H5中,可以使用`enterkeyhint`属性来修改软键盘右下角的回车键行为,
例如将其设置为go、send等,以实现将回车键显示为‘前往’或‘发送’的效果。
此属性支持的值包括enter、done、go、next、previous、search和send,
可以根据需求选择合适的行为。
怎么修改h5软键盘的文字,将右下角的回车换行更改为前往或发送
文档中很多都是修改为前往,搜索,提交等。
修改的<input type="search" />属性,
其实还是有另外一个属性的:enterkeyhint
h5修改软键盘文字,将换行改为前往或发送
在H5中,可以使用`enterkeyhint`属性来修改软键盘右下角的回车键行为,
例如将其设置为go、send等,以实现将回车键显示为‘前往’或‘发送’的效果。
此属性支持的值包括enter、done、go、next、previous、search和send,
可以根据需求选择合适的行为。
怎么修改h5软键盘的文字,将右下角的回车换行更改为前往或发送
文档中很多都是修改为前往,搜索,提交等。
修改的<input type="search" />属性,
其实还是有另外一个属性的:enterkeyhint
<input enterkeyhint="enter">
<input enterkeyhint="done">
<input enterkeyhint="go">
<input enterkeyhint="next">
<input enterkeyhint="previous">
<input enterkeyhint="search">
<input enterkeyhint="send">Run code
Cut to clipboard
文章:移动设备(触屏设备)禁止放大缩小网页 发表时间:2025-02-26, 17:03:58
#14
作者:广西百色市
js加密压缩出现bug
JavaScript代码压缩后报错
不严谨写法:
会出现错误信息:
VM30:1 Uncaught SyntaxError: Invalid or unexpected token
正确写法:
运行正常。
0x1、for、if 函数之间缺少“{}”符号
不严谨写法:
压缩后:
会出现报错信息:
VM401:1 Uncaught SyntaxError: Unexpected token else
正确写法:
所以在平时写代码中,不要为了方便减少必要的“{}”、“;”符号。
0x2、xxxx is not defined 错误原因及解决方法
JavaScript 加密混淆之后运行 xxxx is not defined
Javascript 提示xxxx is not defined
0x0、xxxx is not defined 错误原因及解决方法
首先提示 xxxx is not defined 就是表示未定义
发生原因:
如果你确定加密之前已经定义了这个“变量名”或者“方法名”,那应该是加密后“变量名/方法名”已经发生改变,导致外部调用的时候找不到这个“方法名/变量名”,才会出错误。
如原来函数(方法)为:
加密后函数(方法)可能为:
这个时候你去调用 “test” 那肯定是未定义(test is not defined)。
解决办法:
1.采用 最牛加密V6版本 ,保留 “变量名/方法名” 方法。
如方法名或者变量名为 “test” ,那就这么添加即可。
这样加密后,这个“变量名/方法名”不会发生改变。就不会出现这个错误问题。
2.提升作用域。
原来函数书写:
改成:
这样随便怎么加密,这个 test 方法会一直存在,并且调用不会出现test is not defined。
3.正确的书写(采用闭包)
我们都见过jquery,jquery就是采用闭包的方式书写。
简单来讲就是私有化所有方法(函数)和变量,然后提供公共访问方式。
我们打个样:
这样随便怎么加密,您后面都可以使用 T 来调用绑定在T上面的方法(函数)及变量。
结语:
其实当我们在写代码的时候就要考虑到这些,方便后面自己调用或者其他人的使用。
所以从开始就要规划怎么写合适。
这种情况精简后查错的方法:
打开IE的脚本错误提示,然后打开调用JS的HTML页面,它会报告缺少分号的所在位置,
然后用UE打开精简后JS文件,转到相应位置加上分号,再找到未精简的JS代码中对应的位置加上分号。
例如:
改为:
var a=1;
var b=2;else[a-zA-Z0-9]+
if (a>b)
a=b;
else
b=a;
if (a>b)
a=b;
else
{b=a}
function a() {
}
function b() {
}function a() {
};
function b() {
};window.load = function()
{
}
JavaScript代码压缩后报错
不严谨写法:
//变量定义
var time = 100
var st = 250
//压缩后代码变成
var time = 100var st = 250
Run code
Cut to clipboard
会出现错误信息:
VM30:1 Uncaught SyntaxError: Invalid or unexpected token
正确写法:
//变量定义
var time = 100;
var st = 250;
//压缩后代码变成
var time = 100;var st = 250;
Run code
Cut to clipboard
运行正常。
0x1、for、if 函数之间缺少“{}”符号
不严谨写法:
function demo(type,array){
var result = "";
if(type === 1)
return "1"
else if(type ===2 )
return "1"
else
if(array && array.length > 0 )
return "array length gt 0"
else
return "array length = 0"
}Run code
Cut to clipboard
压缩后:
;function method1(type,array){var result="";if(type===1)return"1"else if(type===2)return"1"else if(array&&array.length>0)return"array length gt 0"else return"array length = 0"};Run code
Cut to clipboard
会出现报错信息:
VM401:1 Uncaught SyntaxError: Unexpected token else
正确写法:
function method1(type,array){
var result = "";
if(type === 1) {
return "1";
}else if(type ===2 ){
return "1";
}else{
if(array && array.length > 0 ){
return "array length gt 0";
}else{
return "array length = 0";
}
}
}Run code
Cut to clipboard
所以在平时写代码中,不要为了方便减少必要的“{}”、“;”符号。
0x2、xxxx is not defined 错误原因及解决方法
JavaScript 加密混淆之后运行 xxxx is not defined
Javascript 提示xxxx is not defined
0x0、xxxx is not defined 错误原因及解决方法
首先提示 xxxx is not defined 就是表示未定义
发生原因:
如果你确定加密之前已经定义了这个“变量名”或者“方法名”,那应该是加密后“变量名/方法名”已经发生改变,导致外部调用的时候找不到这个“方法名/变量名”,才会出错误。
如原来函数(方法)为:
function test(){
//todo
}Run code
Cut to clipboard
加密后函数(方法)可能为:
function _0xaoem(){
//todo
}Run code
Cut to clipboard
这个时候你去调用 “test” 那肯定是未定义(test is not defined)。
解决办法:
1.采用 最牛加密V6版本 ,保留 “变量名/方法名” 方法。
如方法名或者变量名为 “test” ,那就这么添加即可。
这样加密后,这个“变量名/方法名”不会发生改变。就不会出现这个错误问题。
2.提升作用域。
原来函数书写:
function test(){
//todo
}Run code
Cut to clipboard
改成:
test = function(){
//todo
}
// or
window.test = function(){
//todo
}Run code
Cut to clipboard
这样随便怎么加密,这个 test 方法会一直存在,并且调用不会出现test is not defined。
3.正确的书写(采用闭包)
我们都见过jquery,jquery就是采用闭包的方式书写。
简单来讲就是私有化所有方法(函数)和变量,然后提供公共访问方式。
我们打个样:
(function(w) {
//定义私有化对象
var T = {};
//绑定方法
T.test = function(){
//todo
}
//提供公共访问方式
w.T = T;
})(window);
//调用test
T.test();Run code
Cut to clipboard
这样随便怎么加密,您后面都可以使用 T 来调用绑定在T上面的方法(函数)及变量。
结语:
其实当我们在写代码的时候就要考虑到这些,方便后面自己调用或者其他人的使用。
所以从开始就要规划怎么写合适。
这种情况精简后查错的方法:
打开IE的脚本错误提示,然后打开调用JS的HTML页面,它会报告缺少分号的所在位置,
然后用UE打开精简后JS文件,转到相应位置加上分号,再找到未精简的JS代码中对应的位置加上分号。
例如:
var a=1
var b=2
Run code
Cut to clipboard
改为:
Run code
Cut to clipboard
var a=1;
var b=2;
尽量在else后面的语句使用大括号
这种情况查错起来比较麻烦,通过正则表达式
Run code
Cut to clipboard
来查找精简后的JS文件,
或者查找else后面是否有注释的行,再找到未精简的JS代码中对应的位置加上大括号。
例如:
Run code
Cut to clipboard
if (a>b)
a=b;
else
b=a;
改为:
Run code
Cut to clipboard
if (a>b)
a=b;
else
{b=a}
尽量在function的反大括号后都加上分号
例如:
Run code
Cut to clipboard
}
function b() {
}
改为:
Run code
Cut to clipboard
};
function b() {
};
这样压缩后才能解决压缩后报错的问题。
同时注意中文乱码的问题,可以不另存为文件而采用复制粘贴的方式。
Run code
Cut to clipboard
{
}
这样定义的,结尾一定要有分号。
Run code
Cut to clipboard
文章:在iOS Safari/Android Chrome禁止手势缩放、阻止下拉刷新、阻止滑动前进后退 发表时间:2025-02-25, 18:56:00
#15
作者:广西百色市
tauri打包失败Error failed to bundle project: error running light.exe,是因为WiX Toolset不支持中文,
tauri 在 windows 下使用中文标题的问题修复
windows下编译tauri时报错奇怪的错误
error running light.exe
这个是因为中文字符造成的,目前仅在windows下发现,应该是wix(Windows Installer XML Toolset)的问题。
解决方案也很简单,直接编辑 src-tauri/tauri.conf.json,
找到 bundle -> windows,增加一个wix的配置即可。
如果是其他语言,需要切换为对应的语言区域代码即可
示例如下
再次编译就正常结束了。
tauri 在 windows 下使用中文标题的问题修复
windows下编译tauri时报错奇怪的错误
error running light.exe
这个是因为中文字符造成的,目前仅在windows下发现,应该是wix(Windows Installer XML Toolset)的问题。
解决方案也很简单,直接编辑 src-tauri/tauri.conf.json,
找到 bundle -> windows,增加一个wix的配置即可。
"windows": {
"wix": {
"language": "zh-CN"
},Run code
Cut to clipboard
如果是其他语言,需要切换为对应的语言区域代码即可
示例如下
"bundle": {
"active": true,
"category": "Productivity",
"copyright": "0ldm0s",
"deb": {
"depends": []
},
"externalBin": [],
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
],
"identifier": "su.tuu.admin",
"longDescription": "",
"macOS": {
"entitlements": null,
"exceptionDomain": "",
"frameworks": [],
"providerShortName": null,
"signingIdentity": null
},
"resources": [],
"shortDescription": "",
"targets": "all",
"windows": {
"wix": {
"language": "zh-CN"
},
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
}Run code
Cut to clipboard
再次编译就正常结束了。
文章:tauri 在window平台打包遇到的问题 发表时间:2025-02-25, 18:41:09
#16
作者:广西南宁市
9157D01C12310FBEED4C57BFA291AD5E9BC23F74
一般-c就是汉化版,机翻为主
magnet:?xt=urn:btih:20FACF9F78F77DB02B799B907BE78E950E78A4A9Run code
Cut to clipboard
前面加上magnet:?xt=urn:btih: 然后复制到下载软件
20FACF9F78F77DB02B799B907BE78E950E78A4A9
文章:uniapp开机自启 发表时间:2025-02-10, 13:17:41
#17
作者:广西南宁市
用代码触发“点击”事件
共两步:
把小图的宽高设为0
在需要时用代码模拟一下小图的点击事件
先来看文档中给出的示例代码:
在依赖环境正确的情况下,复制到合适位置就可以正常使用。
接下来对它进行修改。
1.获取引用
要想模拟点击,前提就是获取dom元素的引用。
VUE中有三种获取的方式,本文以最简单的document方式举例。
给元素加个id:
此时,如果在ts中执行document.getElementById('show-image').click()就可以显示大图了。
这一步测试成功之后就可以把document.getElementById('show-image').click()绑定到其他事件上,比如某个按钮的点击,这样就实现了“点击按钮显示大图”
2.设置宽高为0
因为<el-image-viewer/>和<el-image/>完全就是两个组件,所以小图不会影响大图,直接置0即可:
此时页面上就不会再显示它了,而触发事件仍然能正常显示大图。
3.改变大图
目前的大图url是写死的,如果想让图片变化就得把url数组传进来。
这里补充一个基本知识:
在vue中,如果只用let定义变量,而且页面使用了这个变量,当组件渲染完成后,再去改变let变量的值,组件中不会跟着变化。如果想让组件能变化,必须使用ref定义引用变量。
也就是:
如果后续想让url变化,需要用srcList.value = 来改变变量的值。
类似这样(用mitt实现,也可以用其他方式实现,只要能调用到这两行代码即可):
这样就实现了通过其他的事件触发<el-image-viewer/>大图的效果。
共两步:
把小图的宽高设为0
在需要时用代码模拟一下小图的点击事件
先来看文档中给出的示例代码:
<template>
<div class="demo-image__preview">
<el-image
style="width: 100px; height: 100px"
:src="url"
:zoom-rate="1.2"
:preview-src-list="srcList"
:initial-index="4"
fit="cover"
/>
</div>
</template>
<script lang="ts" setup>
const url =
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg'
const srcList = [
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
]
</script>
<style scoped>
.demo-image__error .image-slot {
font-size: 30px;
}
.demo-image__error .image-slot .el-icon {
font-size: 30px;
}
.demo-image__error .el-image {
width: 100%;
height: 200px;
}
</style>
Run code
Cut to clipboard
在依赖环境正确的情况下,复制到合适位置就可以正常使用。
接下来对它进行修改。
1.获取引用
要想模拟点击,前提就是获取dom元素的引用。
VUE中有三种获取的方式,本文以最简单的document方式举例。
给元素加个id:
<el-image
id="show-image"
style="width: 100px; height: 100px"
:src="url"
其他参数略
/>Run code
Cut to clipboard
此时,如果在ts中执行document.getElementById('show-image').click()就可以显示大图了。
这一步测试成功之后就可以把document.getElementById('show-image').click()绑定到其他事件上,比如某个按钮的点击,这样就实现了“点击按钮显示大图”
2.设置宽高为0
因为<el-image-viewer/>和<el-image/>完全就是两个组件,所以小图不会影响大图,直接置0即可:
<el-image
id="show-image"
style="width: 100px; height: 100px"
:src="url"
其他参数略
/>Run code
Cut to clipboard
此时页面上就不会再显示它了,而触发事件仍然能正常显示大图。
3.改变大图
目前的大图url是写死的,如果想让图片变化就得把url数组传进来。
这里补充一个基本知识:
在vue中,如果只用let定义变量,而且页面使用了这个变量,当组件渲染完成后,再去改变let变量的值,组件中不会跟着变化。如果想让组件能变化,必须使用ref定义引用变量。
也就是:
let srcList = ref([
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
'https://fuss10.elemecdn.com/9/bb/e27858e973f5d7d3904835f46abbdjpeg.jpeg',
'https://fuss10.elemecdn.com/d/e6/c4d93a3805b3ce3f323f7974e6f78jpeg.jpeg',
'https://fuss10.elemecdn.com/3/28/bbf893f792f03a54408b3b7a7ebf0jpeg.jpeg',
'https://fuss10.elemecdn.com/2/11/6535bcfb26e4c79b48ddde44f4b6fjpeg.jpeg',
])Run code
Cut to clipboard
如果后续想让url变化,需要用srcList.value = 来改变变量的值。
类似这样(用mitt实现,也可以用其他方式实现,只要能调用到这两行代码即可):
// 当其他组件弹射时,先修改url的值,再模拟点击一下图片
bus.on("showImg", ({ data: data }) => {
srcList.value = data;
document.getElementById('show-image').click()
})Run code
Cut to clipboard
这样就实现了通过其他的事件触发<el-image-viewer/>大图的效果。
文章:vue3 element-plus 实现图片预览 发表时间:2025-02-14, 10:50:19
#19
作者:广西南宁市
https://www.pornhub.com/view_video.php?viewkey=ph584957aabad9b
http://www.superteensextube.com/
http://5prn.ru/track/teen7/Teen+sucking+off+cocks?IN_KEY=Teen+sucking+off+cocks
https://teen-sex.me/
https://hdhole.com/gym-videos
https://www.cumhall.com/vids/stepsister/668.html
https://wowteenporn.com/video/56964
https://sexnporntube.com/category/incest-family-porn/
https://www.gradeuptube.com/tube/teen
https://losttube.com/category/teen-porn/
https://wowteenporn.com/video/56964
https://www.xvideos.com/embedframe/pcfefv5d7f
https://www.sexteenageporn.com/category/younger-1.htm
https://www.sexteenageporn.com/?vs=c2V4dGVlbmFnZXBvcm4uY29tfA==
https://sexzeal.cc/video163627/
https://teenx.tv/channel/pussy/1
https://www.teenvirginporn.com/
花井美理
https://x.com/mirihanai/status/1867535066198683901
BEMA-002
工藤拉拉
装人偶看过一个叫青井草莓的
文章:uniapp开机自启 发表时间:2024-11-11, 14:58:59
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>选择文本自定义菜单</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .custom-menu { position: fixed; background-color: #fff; border: 1px solid #ccc; padding: 10px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); z-index: 1000; } .custom-menu div { cursor: pointer; padding: 5px; } .custom-menu div:hover { background-color: #f0f0f0; } </style> </head> <body> <p>这是一段示例文本,请选择其中的部分内容以查看自定义菜单。</p> <script> document.addEventListener('selectionchange', function () { const selection = window.getSelection(); if (selection.toString().trim() !== '') { const range = selection.getRangeAt(0); const rect = range.getBoundingClientRect(); // 移除已存在的菜单 const existingMenu = document.querySelector('.custom-menu'); if (existingMenu) { document.body.removeChild(existingMenu); } // 创建自定义菜单 const menu = document.createElement('div'); menu.className = 'custom-menu'; menu.style.left = `${rect.left + window.scrollX}px`; menu.style.top = `${rect.bottom + window.scrollY}px`; // 复制选项 const copyOption = document.createElement('div'); copyOption.textContent = '复制'; copyOption.addEventListener('click', function () { navigator.clipboard.writeText(selection.toString()); document.body.removeChild(menu); }); // 分享选项 const shareOption = document.createElement('div'); shareOption.textContent = '分享'; shareOption.addEventListener('click', function () { alert('分享功能未实现'); document.body.removeChild(menu); }); // 添加选项到菜单 menu.appendChild(copyOption); menu.appendChild(shareOption); document.body.appendChild(menu); // 点击其他地方关闭菜单 document.addEventListener('click', function () { if (menu) { document.body.removeChild(menu); } }, { once: true }); } }); </script> </body> </html>只要不遇上松本一香,大概率出不了工伤
德田重男
出来赚钱的,还能挑客人:、:
工作缠身,GVH,来晚了,722
应该是gvh望月这部715吧