在门上开一个洞?

时间:2013-02-26 15:13:02

标签: jquery html css

我有<div>,背景图片是木头重复的。

我现在想在这个窗口上挖一个洞。有没有办法在HTML和CSS中做到这一点?欢迎使用Javascript。

请参阅jsFiddle

上的此示例

4 个答案:

答案 0 :(得分:3)

很简单 - 使用<svg>元素中的路径绘制门。

<svg  xmlns="http://www.w3.org/2000/svg" id="svg-door">
    <defs>
         <pattern id="wood" patternUnits="userSpaceOnUse" width="1024" height="768">
             <image xlink:href="http://i.imgur.com/Ljug3pp.jpg" x="0" y="0" width="1024" height="768" />
        </pattern>
    </defs>
    <path xmlns="http://www.w3.org/2000/svg" d="
        M0,0 225,0 225,300 0,300 z
        M165,10, 215,10 215,80 165,80 z
    " fill="url(#wood)" fill-rule="evenodd"/>
</svg>

CSS:

#svg-door {
   background-image: url(http://pcdn.500px.net/15548893/7f3b7c411716b1fb29c5cffb3efcf8ce33eacd76/15.jpg);
    background-size: cover;
    box-sizing: border-box;
    padding: 100px;
    width: 100%;
    height: 500px;
}

这种方法的优点是你的背景可以是任何东西,窗口是一个真正的窗口(透视)。

我已经预先计算了你的路径,你可以在我的小提琴中找到新的门 - http://jsfiddle.net/teddyrised/qS4G7/

[编辑]为了完整起见,我还使用木质纹理作为svg路径的背景图像。

答案 1 :(得分:2)

你是说这个意思吗? http://jsfiddle.net/UWyvz/3/

我基本上使用了一些木头并创建了一个窗格。

不,我复制了window,但称之为windowpane,然后将窗格的z-index设置为低于window的窗格,并设置background-color windowpane为白色。

答案 2 :(得分:2)

可能是一个“丑陋的修复”,但它确实有效:使用border-property来模拟一个门(该元素实际上就是窗口)。

<强> HTML

<div class="door"></div>

<强> CSS

body {
    background-image:url("http://wallpapers.free-review.net/wallpapers/42/Sun_in_white_cloud.jpg");
}
.door {
    height:70px;
    width:50px;
    background-color:rgba(0, 0, 255, 0.4);
    border-left: 175px solid orange;
    border-top: 10px solid orange;
    border-right: 10px solid orange;
    border-bottom: 230px solid orange;
    border-image:url("http://roundsquarewoodworking.com/wp-content/uploads/2010/07/wood-texture-background.jpg") 25% repeat;
}

JSFiddle

修改

更新了代码以查看“透视”效果。边界并不完美,但我希望你能理解。

答案 3 :(得分:0)

我建议使用canvas html5。 http://www.html5canvastutorials.com