开发者

center an element?

开发者 https://www.devze.com 2022-12-19 11:45 出处:网络
if i\'ve got a line of links like: <a>foobar</a><a>foobar</a><a>foobar</开发者_开发知识库a><a id=\"center\">foobar</a><a>foobar</a>

if i've got a line of links like:

 <a>foobar</a><a>foobar</a><a>foobar</开发者_开发知识库a><a id="center">foobar</a><a>foobar</a>

but one of them got an id="center", could i with javascript or css position it in the center?


If you mean DOM-locality...

You could have to actually manipulate the DOM via scripting. My guess is that you would need to have a way to reference all of these links, by a container or a common classname. Then divide the total number of links by 2, inserting the center link at that particular index.

$(function(){
 var bodyLinks = $("body a");
 var halfPoint = Math.floor(Number(bodyLinks.length/2)-1);
 $("body a:eq("+halfPoint+")").after($("#center"));
});​

Online demo: http://jsbin.com/aroba/edit

If you mean CSS-placement:

<p><!-- padleft -->link1 link2 link3 **link4** link5 link6
                               link1 **link2** link3 link4 link5 link6
       link1 link2 link3 link4 link5 **link6**

This solution is a bit premature, and could benefit from some further development. Essentially I placed the links within a paragraph. I then calculated the total width of all elements preceding the special-link (our center link) and used it to figure a padding-left for the containing paragraph tag.

$(function(){
  var elWidth = $("#center").width();
  var elOffset = $("#center").offset().left;
  var wnWidth = $("body").width();
  var sibWidths = 0;
  
  $("#center").prevAll("a").each(function(){
    sibWidths = sibWidths + $(this).width();
  });
 
  var gutter = ((wnWidth-elWidth)/2)-sibWidths;
  
  $("body p:first").css({paddingLeft:gutter});
  
});

Online demo: http://jsbin.com/oniba/edit


Your question leaves out a few details, but this might be close to what you're after:

$("#center").css({
    position: "absolute",
    left: function () { 
        return (this.offsetParent.offsetWidth - this.offsetWidth) / 2 + "px";
    }
});


UPDATED: Here's another take:

<html>
<head>
    <title>SO</title>
    <style type="text/css">
        td{
            padding:0;
        }
        .left{
            width: 49%;
            text-align:right;
        }
        .right {
            width: 49%;
            text-align:left;
        }
        .middle {
            width: 2%;
            text-align:center;
            background:#DEF;
            white-space:nowrap;
        }
        td div {
            overflow: hidden;
            height:1.2em;
        }
    </style>
</head>
<body>

</head>
<body>
    <table>
        <tr>
            <td class="left"><div><a>left 1</a><a>left 2</a><a>left 3</a><a>left 4</a><a>left 5</a><a>left 6</a><a>left 7</a><a>left 8</a></div></td>
            <td class="middle"><a>center</a></td>
            <td class="right"><div><a>right 1</a><a>right 2</a><a>right 3</a><a>right 4</a><a>right 5</a><a>right 6</a></div></td>
        </tr>
    </table>
</body>
</html>
0

精彩评论

暂无评论...
验证码 换一张
取 消