<!DOCTYPE html>
<html>
<style>
body {
background-color: #eee;
}
</style>
<body>
<p>要使用的图片:</p>
<img src="bootstrap.png" alt="tulip" id="myImage" style="margin-left:0px;" />
<script>
function adjustBrightness(image, brightness) {
// 创建 Canvas 元素
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
// 设置 Canvas 的宽度和高度与图片一致
canvas.width = image.width;
canvas.height = image.height;
// 在 Canvas 上绘制图片
context.drawImage(image, 0, 0);
// 获取 ImageData 对象
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
// 调整亮度值
const adjustedBrightness = brightness * 2.55; // 将亮度值从 -100 到 100 映射到 -255 到 255 范围内
var count = 0
// 遍历每个像素,调整亮度
for (let i = 0; i < data.length; i += 4) {
const pixelIndex = i / 4;
// 计算当前像素点的坐标
const x = pixelIndex % canvas.width;
const y = Math.floor(pixelIndex / canvas.width);
// 提取颜色通道的值
let red = data[i];
let green = data[i + 1];
let blue = data[i + 2];
let alpha = data[i + 3];
// 遮罩层起始线
if (y > image.height / 2) {
// 调整亮度
red += adjustedBrightness;
green += adjustedBrightness;
blue += adjustedBrightness;
// 确保颜色值在 0-255 范围内
red = Math.max(0, Math.min(255, red));
green = Math.max(0, Math.min(255, green));
blue = Math.max(0, Math.min(255, blue));
// 将调整后的颜色值写回 ImageData 对象
data[i] = red;
data[i + 1] = green;
data[i + 2] = blue;
}
}
// 将修改后的像素数据重新绘制到 Canvas 上
context.putImageData(imageData, 0, 0);
// 创建一个新的图像对象,并将 Canvas 的绘制结果赋值给该图像对象
const resultImage = new Image();
resultImage.src = canvas.toDataURL();
// 返回新的图像对象
return resultImage;
}
// 获取图片元素
const image = document.getElementById("myImage");
image.onload = function () {
// 调用函数来增加亮度
const adjustedImage = adjustBrightness(image, -70);
// 将结果显示在页面上
document.body.appendChild(adjustedImage);
};
</script>
</body>
</html>
第一种方案呢,是通过 border-radius 来调整边框圆角,然后搭配超出隐藏( overflow:hidden
)。但是你这个情况需要用到 水平半长轴
和 垂直半长轴
属性来设置自定义圆角 👉 CSS border-radius 制作特殊圆
第二种方案,直接使用 mask 属性来剪裁阴影方块。 CSS 中的遮罩属性 mask/masks
10 回答11.1k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
5 回答1.9k 阅读
直接给
div.swiper-slide
加个overflow: hidden
就行