Heim  >  Artikel  >  Web-Frontend  >  Code zum Zeichnen von Pfeilzielen mit js und css

Code zum Zeichnen von Pfeilzielen mit js und css

小云云
小云云Original
2018-03-26 16:22:091741Durchsuche

Angenommen, ich möchte jetzt ein Bild zeichnen, das einem Pfeilziel ähnelt, mit drei Kreisen, die ich hoffentlich direkt in HTML schreiben kann es kann jedem helfen.

//html部分<body>
    <p class="circle0">
        <p class="circle1">
            <p class="circle2">
            </p>
        </p>
    </p></body>

Wie wäre es mit der Erstellung eines Kreises Mittelpunkt und der Verschachtelung von Kreisen darin?
Die Positionswerte sind fest, statisch, relativ, absolut, erben. Unter diesen ist statisch der Standardwert, fest ist relativ zum Browserfenster positioniert die obere linke Eckkoordinate ist (0, 0);
relativ wird als relative Positionierung bezeichnet, sie ist relativ zu sich selbst positioniert, ihre Koordinaten sind (0, 0),
bedeutet einen Versatz von 20 Pixel nach links; Absolut heißt absolute Positionierung und ist relativ, außer statisch. Ein durch left=20pxinherit positioniertes übergeordnetes Element erbt den Positionsattributwert des übergeordneten Elements.

Hier machen wir das

Schreiben Sie weiterhin das CSS für den inneren Kreis von Hand, dann müssen Sie es möglicherweise einzeln schreiben, da ihre Größen unterschiedlich sind
.circle0{    /*大圆的大小*/
    /*如何画圆?先是画一个正方形*/
    width:600px;    height:600px;    /*然后设置圆角为50%,就变成一个圆*/
    border-radius:50%;    /*大圆设成relative作为第一个内圆的参考定位容器*/
    position:relative;    /*大圆居中*/
    margin:0 auto;    border:1px solid #000;    background-color:green;}

Sie können zwar auch die drei gewünschten runden Pfeilziele schreiben, aber? ? ?
.circle1{    width:400px;    height:400px;    border-radius:50%;    /*这是居中的一种方法哦*/
    position:absolute;    top:50%;    left:50%;    /*这样设置之后,圆会偏右下方,应该再往左上方移动一半的自己的宽和高*/
    margin-left:-200px;    margin-top:-200px;    /*这样就居中啦*/  

    border:1px solid #000;    background-color:green;}/*最里面的圆也是这样写,提示:此时它相对第二个圆定位,但是没有什么关系*/.circle2{    width:200px;    height:200px;    border-radius:50%;    position:absolute;    top:50%;    left:50%;    margin-left:-100px;    margin-top:-100px;  

    border:1px solid #000;    background-color:green;}

Was wäre, wenn ich Sie bitten würde, 100 Kreise zu zeichnen? Sie können sie nicht einzeln schreiben, es ist eine so repetitive Arbeit und ein sich wiederholender Code. Kommen wir also zum Thema dieses Artikels und schreiben wir ihn in js.

Aufmerksame Schüler haben herausgefunden, dass der CSS-Code jedes inneren Kreises sehr regelmäßig ist. Dann ist der mittlere Code in zwei Teile unterteilt ist auf sich selbst bezogen.

Jetzt, da wir das Muster gefunden haben, können wir mit dem Schreiben beginnen

/*css部分*/
    /*既然圆的大小是不一样的而且是有规律,那么我们就不写死了,先把一样的写出来吧,有同学可能想为什么不直接也在js中写?第一,因为这都是相同的代码,重复写几次,很耗空间,第二,在js中写这些比直接给它个className耗性能,所以我们能在css中写的还是在css中写,这样也能更好的分离*/
    .circle{        border-radius: 50%;        /*文本居中,为下一篇文章做铺垫*/
        text-align: center;        background-color: green;        border: 1px solid #000;        position: absolute;        top:50%;        left:50%;        cursor: pointer;    }
    /*利用id选择器的优先级比class大,覆盖掉一些属性值,大圆我们希望它在浏览器中也是居中的,而且position是相对定位的,大小也是不要写死,增加灵活性,修改的时候只需要修改几个参数*/
    #circle{        position: relative;        top:0;        left:0;        margin:10px auto;    }
ok, wir müssen also nicht so langes CSS und HTML zum Schreiben und Verwenden verwenden Ist es nicht sehr praktisch, die darin enthaltenen Regeln direkt mit js auszugeben? Im Anhang ist die Darstellung von n=20, Intervall=30px:
/*js部分*/window.onload=function(){
        //先创建大圆
        var layout=document.createElement("p");        //注意添加class和id的区别哦
        layout.className="circle";
        layout.id="circle";        var n=10;//n个圆,人为参数一,可根据需要修改
        var interval=30;//圆宽高依次小30px,间距则为15px,且最小的圆直径设为30px,则最大的圆的直径为n个interval,人为参数二,可根据需要修改

        layout.style.width=n*interval+"px";
        layout.style.height=n*interval+"px";        //添加文本
        layout.innerHTML=n;        //把大圆添加进body中
        document.getElementsByTagName("body")[0].appendChild(layout);        //接着创建小圆
        for(var i=1;i<n;i++){            //千万要在循环的时候重新给p指向哦,不然再第二个循环的时候就会出错
            var p=document.createElement("p");
            p.className="circle";            //画圆,返回的子圆作为父圆,继续画圆
            layout=loadp(layout,p,n-i); 
        }
    }    function loadp(parent,child,v){
        child.style.width=30*v+"px";
        child.style.height=30*v+"px";        //注意驼峰
        child.style.marginLeft=-15*v+"px";
        child.style.marginTop=-15*v+"px";        //添加文本
        child.innerHTML=v;        parent.appendChild(child);        //返回子圆哦
        //如果上面没有在每一次循环中重新指向一个新的p,在第二次循环的时候调用本函数就是在修改第一个内圆的属性值,而且在appendChild的时候发生错误
        return child;
    }


Das obige ist der detaillierte Inhalt vonCode zum Zeichnen von Pfeilzielen mit js und css. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn