经典的带阴影的可拖动的浮动层

下面我就为你详细讲解如何制作“经典的带阴影的可拖动的浮动层”。

准备工作

首先,我们需要准备完成以下几项工作:

  1. 编写 HTML 结构
  2. 编写 CSS 样式

HTML 结构

首先,我们需要在 HTML 中创建一个 div 元素,用于作为浮动层的基础容器。在这个 div 上添加两个特殊的类名:.draggable(可拖动的)和 .shadow(带阴影的)。其中,.draggable类名表示这个浮动层是可拖动的,.shadow类名表示这个浮动层需要添加阴影效果。

示例如下:

<div class="draggable shadow">
  <!-- 待添加内容 -->
</div>

CSS 样式

接下来,我们需要添加以下 CSS 样式,来完成浮动层的效果:

基础样式

首先,我们需要为浮动层添加基础的样式,包括宽度、高度、位置、背景色等:

.draggable {
  width: 200px; /* 宽度 */
  height: 200px; /* 高度 */
  position: absolute; /* 位置 */
  top: 50%; /* 垂直居中 */
  left: 50%; /* 水平居中 */
  transform: translate(-50%, -50%); /* 垂直、水平居中 */
  background-color: #fff; /* 背景色 */
  border-radius: 5px; /* 圆角 */
}

可拖动样式

接下来,我们需要为浮动层添加可拖动的样式,包括鼠标指针形状、z-index 值等:

.draggable {
  /* 基础样式 */
  cursor: move; /* 鼠标指针形状 */
  z-index: 1; /* z-index 值 */
}

阴影样式

接下来,我们需要为浮动层添加阴影的样式,包括阴影颜色、阴影模糊度、阴影扩散度等:

.shadow {
  /* 基础样式 */
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), 0 0 2px rgba(0, 0, 0, 0.2); /* 阴影 */
}

Javascript 事件

最后,我们需要添加 Javascript 代码,来实现浮动层的可拖动功能:

let isDragging = false; // 判断是否拖动
let mouseX, mouseY; // 鼠标位置(相对于浮动层左上角)
let targetX, targetY; // 浮动层位置(相对于页面左上角)

// 监听mousedown事件
document.querySelector('.draggable').addEventListener('mousedown', function(e) {
  isDragging = true; // 开始拖动
  targetX = e.target.offsetLeft;
  targetY = e.target.offsetTop;
  mouseX = e.pageX - targetX;
  mouseY = e.pageY - targetY;
});

// 监听mousemove事件
document.addEventListener('mousemove', function(e) {
  if (!isDragging) return false;

  let x = e.pageX - mouseX;
  let y = e.pageY - mouseY;

  document.querySelector('.draggable').style.left = x + 'px';
  document.querySelector('.draggable').style.top = y + 'px';
});

// 监听mouseup事件
document.addEventListener('mouseup', function() {
  isDragging = false; // 停止拖动
});

以上就是制作“经典的带阴影的可拖动的浮动层”的完整攻略,接下来我将为你提供两个示例。

示例1:百度搜索框

<div class="draggable shadow">
  <input type="text" placeholder="百度一下,你就知道">
</div>
.draggable {
  width: 300px;
  height: 40px;
  position: absolute;
  top: 20%;
  left: 50%;
  transform: translate(-50%, -20%);
  background-color: #fff;
  border-radius: 20px;
  padding: 10px;
}

.draggable input[type="text"] {
  width: 100%;
  height: 100%;
  border: none;
  outline: none;
  font-size: 18px;
}

.shadow {
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3), 0 0 2px rgba(0, 0, 0, 0.2);
}

/* 省略Javascript事件 */

示例2:图片浏览器

<div class="draggable shadow">
  <img src="./images/pic.png" alt="">
</div>
.draggable {
  width: 600px;
  height: 400px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #f0f0f0;
  border-radius: 10px;
  overflow: hidden;
}

.draggable img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.shadow {
  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.3), 0 0 5px rgba(0, 0, 0, 0.2);
}

/* 省略Javascript事件 */

希望以上对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:经典的带阴影的可拖动的浮动层 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css样式优先级及层叠的顺序排序探讨

    下面是关于“CSS样式优先级及层叠的顺序排序探讨”的完整攻略。 什么是CSS的层叠和优先级? CSS层叠的原理是将多个样式作用于同一元素时,将不同来源的样式进行比较,决定哪个样式具有最高的优先级。 CSS样式的优先级由以下3个要素决定,优先级从高到低分别是: !important:拥有最高的优先级; 行内样式:直接在标签内部使用style属性定义的样式; 选…

    css 2023年6月9日
    00
  • ES6使用export和import实现模块化的方法

    ES6使用export和import关键字实现模块化是JavaScript中常用的模块化方案之一。在本篇攻略中,我们将通过详细讲解来了解这一方案的具体实现过程。 一、ES6中简单模块化的实现 在ES6中实现模块化,我们需要用到export和import两个关键字。我们可以通过export关键字将模块中需要对外暴露的内容暴露出去,然后在其他的地方通过impor…

    css 2023年6月9日
    00
  • 只需20行代码就可以写出CSS覆盖率测试脚本

    下面是详细讲解“只需20行代码就可以写出CSS覆盖率测试脚本”的完整攻略。 什么是CSS覆盖率测试 CSS覆盖率测试是指验证CSS样式文件中哪些CSS选择器在页面渲染中真正被使用到了。通过这种方式可以减小CSS文件的大小,优化页面加载速度和性能。在开发中,使用CSS覆盖率测试可以发现哪些CSS属性没有被使用到,以便于淘汰无用的CSS,减小项目体积。 实现CS…

    css 2023年6月10日
    00
  • 网页里的两种盒子模型(W3C盒子模型、IE盒子模型)

    下面就来详细讲解网页里的两种盒子模型。 什么是盒子模型 盒子模型是指在网页中,每个HTML元素都是一个矩形的盒子,包含内容、内边距、边框和外边距4部分。不同的盒子模型对这四部分的计算方式不同,也就影响到了页面元素的大小和布局。 W3C盒子模型 W3C盒子模型又称标准盒子模型,它是W3C标准规定的盒子模型。在W3C盒子模型中,元素的总宽度 = 内容宽度(wid…

    css 2023年6月10日
    00
  • 如何用float配合position:relative实现居中

    下面是如何用float配合position:relative实现居中的完整攻略: 步骤一:给父元素设置position:relative属性 首先,在HTML文件中选中你想要居中的父元素,并为它设置position:relative属性。这个属性的主要作用是为后面的子元素提供定位参照点。 <div class="parent"&gt…

    css 2023年6月10日
    00
  • 解决子容器全部浮动时父容器高度不能自动撑开的方法

    当在一个父容器中包含多个子元素时,这些子元素被设置了浮动属性后,会脱离文档流,导致父容器高度不能自适应其内容高度的变化。解决这个问题的方法有以下两种: 1. 使用Clearfix Clearfix是一种CSS技巧,它可以在浮动元素的父元素上使用来清除浮动对父容器高度的影响。在父容器上添加一个clear样式可以让其自动撑开。 示例代码: .parent-con…

    css 2023年6月9日
    00
  • React性能优化的实现方法详解

    React性能优化的实现方法详解 React 是一款高效和强大的 JavaScript 库,但随着应用规模的增长和数据量的增加,React 应用的性能优化就变得尤为重要。本文将介绍 React 性能优化的实现方法,从组件设计到数据管理等多个方面详细讲解。 组件设计 组件是 React 应用的核心,它们是构建 UI 的基本单元。优化组件的设计可以提高应用的性能…

    css 2023年6月10日
    00
  • js实现扫雷源代码

    以下是JS实现扫雷游戏的完整攻略。 1. 界面设计 扫雷游戏的界面设计非常重要,需要清晰明了地展示扫雷格子以及游戏信息等元素。 我们可以通过HTML和CSS来实现扫雷游戏的界面设计。 1.1 HTML 在HTML文件中,我们可以使用表格来展示扫雷格子。每个扫雷格子的状态需要通过CSS来定义。 示例代码: <table> <tr> &l…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部