Web网页坦克大战里面坦克有四种朝向,普通情况会是四张图片,其实只是显示一张图片的不同区域,就像下图:

原理是把这张图作为一个div的背景图片,并限制div区域宽高以及显示图片的区域坐标

上图中白色框内是网页中的本身的div

对于图片显示区域的坐标原点是div的左上角坐标,background-position-X或者Y都是根据如图坐标计算来移动原点的位置

就算坐标值为负也可,因为默认div的背景图周边也一层一层在div外的拼接着,只不过限制了div的宽高没有显示。

下例中图片为440x330,所以div取图片四分之一220x165,而且X=-110px & Y=-82px 与 X=330px & Y=248px 显示的是图片同样的中间部分

<html>
<head>
    <title>改变图片显示区域</title>
    <script>
        function change(obj){
            var ob = document.getElementById("td");
            if(obj.value == "左上"){
                ob.style.backgroundPositionY = 0 + "px";
                ob.style.backgroundPositionX = 0 + "px";
            }
            else if(obj.value == "左下"){
                ob.style.backgroundPositionY = 165 + "px";
                ob.style.backgroundPositionX = 0 + "px";
            }
            else if(obj.value == "居中"){
                ob.style.backgroundPositionY = 248 + "px";
                ob.style.backgroundPositionX = 330 + "px";
            }
            else if(obj.value == "右上"){
                ob.style.backgroundPositionY = 0 + "px";
                ob.style.backgroundPositionX = 220 + "px";
            }
            else if(obj.value == "右下"){
                //就算坐标为负,只要计算准确也能显示出预期区域
                ob.style.backgroundPositionY = -165 + "px";
                ob.style.backgroundPositionX = -220 + "px";
            }
        }
    </script>
</head>
<body>
    <div id="td" style="background-image: url('Work.jpg'); width: 220px; height: 165px; 
        background-position-Y: -82px; background-position-X: -110px">
    </div><br>
    <input type="button" value="左上" onclick="change(this)">
    <input type="button" value="左下" onclick="change(this)">
    <input type="button" value="居中" onclick="change(this)">
    <input type="button" value="右上" onclick="change(this)">
    <input type="button" value="右下" onclick="change(this)">
</body>
</html>