How to place a div on the right side with absolute position
Asked Answered
A

8

63

I've a page where a dynamic message box has to be displayed without disturbing the actual page. This message box has to appear at the top right corner of the page overlapping the existing contents.

I've tried to use position: absolute but then I'm unable to place it in the right corner. Also I'm unable to use left since I've to support responsive design from Bootstrap.

Here is a sample markup

<html>
    <body>
        <div class="container">
            <!-- Need to place this div at the top right of the page-->
            <div class="ajax-message">
                <div class="row">
                    <div class="span9">
                        <div class="alert">
                            <a class="close icon icon-remove"></a>
                            <div class="message-content">
                                Some message goes here
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- Page contents starts here. These are dynamic-->
            <div class="row">
                <div class="span12 inner-col">
                    <h2>Documents</h2>
                </div>
            </div>
        </div>
    </body>
</html>

This message box should have a width of 50% with respect to the .container and the left side of the message box should not be overlapped by it. ie we should be able to click/select the contents of the left side.

Please find a sample here.

Please help me to solve this problem.

Asthenic answered 16/3, 2012 at 10:22 Comment(1)
#11334124Fayalite
G
79
yourbox{
   position:absolute;
   right:<x>px;
   top  :<x>px;
}

positions it in the right corner. Note, that the position is dependent of the first ancestor-element which is not static positioned!

EDIT:

I updated your fiddle.

Goral answered 16/3, 2012 at 10:26 Comment(0)
M
65
yourbox {
   position: absolute;
   left: 100%;
   top: 0;
}

left:100%; is the important issue here!

Monobasic answered 15/12, 2013 at 10:55 Comment(3)
left:100% puts the LEFT edge of the div at the far right side of the window, so the rest of the div is hidden. left:94% worked for me. Great solution, thanks.Kohler
This assumes that yourbox is 100% of the window widthNilson
While left: 100% is not always what you would want, in my case, it was perfect, as it positioned the left edge of the div relative to the right edge of its container.Limerick
S
41

For top right corner try this:

position: absolute;
top: 0;
right: 0;
Salutation answered 24/4, 2018 at 7:37 Comment(0)
C
6

You can use "translateX"

<div class="box">
<div class="absolute-right"></div>
</div>

<style type="text/css">
.box{
    text-align: right;
}
.absolute-right{
    display: inline-block;
    position: absolute;
}

/*The magic:*/
.absolute-right{
-moz-transform: translateX(-100%);
-ms-transform: translateX(-100%);
-webkit-transform: translateX(-100%);
-o-transform: translateX(-100%);
transform: translateX(-100%);
}
</style>
Confounded answered 15/4, 2016 at 16:50 Comment(0)
D
3

Simple, use absolute positioning, and instead of specifying a top and a left, specify a top and a right!

For example:

#logo_image {
    width:80px;
    height:80px;
    top:10px;
    right:10px;
    z-index: 3;
    position:absolute;
}
Dendrology answered 3/4, 2018 at 20:8 Comment(1)
(-‸ლ) That works. (MDN link for the doubters)Leonorleonora
P
1

I'm assuming that your container element is probably position:relative;. This is will mean that the dialog box will be positioned accordingly to the container, not the page.

Can you change the markup to this?

<html>
<body>
    <!-- Need to place this div at the top right of the page-->
        <div class="ajax-message">
            <div class="row">
                <div class="span9">
                    <div class="alert">
                        <a class="close icon icon-remove"></a>
                        <div class="message-content">
                            Some message goes here
                        </div>
                    </div>
                </div>
            </div>
        </div>
    <div class="container">
        <!-- Page contents starts here. These are dynamic-->
        <div class="row">
            <div class="span12 inner-col">
                <h2>Documents</h2>
            </div>
        </div>
    </div>
</body>
</html>

With the dialog box outside the main container then you can use absolute positioning relative to the page.

Palmate answered 16/3, 2012 at 10:34 Comment(0)
J
1

It worked for me:

.yourbox {
    position: absolute;
    display: block;
    top: 0;  
    right: 0;
    left: inherit;
}

It is important here - left: inherit;

Jae answered 16/9, 2022 at 9:33 Comment(0)
M
0

Can you try the following:

float: right;
Mixie answered 16/3, 2012 at 10:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.