I'm writing a javascript object to build a widget (which is reused in
several pages).

I first used document.write to create a few div. Then, I switched to
Element to directly create the DOM. But in this last case, things
don't work find under IE (but all is OK with Firefox). The problem is
when I try to set the propertied of that divs from my javascript
controller: it seems that using DOM, the position (fixed/absolute) is
not well understood under IE.

Here is my code:

var ImageFullSimpleView = Class.create(AbstractView, {
    // View for full size image with only navigation buttons
    //
    initialize: function($super) {
        $super("fullSimple");
    },

    createWidgets: function($super) {

        // Create widgets
        document.write("<div id=\"" + this._name + "_mask\" class=
\"fullMask\"></div>\n");
        document.write("<div id=\"" + this._name + "_content\" class=
\"fullContent\">\n");
        document.write("    <img id=\"" + this._name + "_image\" class=
\"fullImage\" />\n");
        document.write("    <div id=\"" + this._name + "_prevButton\"
class=\"fullPrevButton\"></div>\n");
        document.write("    <div id=\"" + this._name + "_nextButton\"
class=\"fullNextButton\"></div>\n");
        document.write("    <div id=\"" + this._name + "_hideButton\"
class=\"fullHideButton\"></div>\n");
        document.write("</div>\n");

        // Create bindings for widgets
        this.mask = $(this._name + "_mask");
        this.content = $(this._name + "_content");
        this.image = $(this._name + "_image");
        this.prevButton = $(this._name + "_prevButton");
        this.nextButton = $(this._name + "_nextButton");
        this.hideButton = $(this._name + "_hideButton");

//         // Create widgets using DOM (doesn't work well with IE)
//         this.mask = new Element('div', {'id': this._name + "_mask",
'class': "fullMask"});
//         document.body.appendChild(this.mask);
//         this.content = new Element('div', {'id': this._name +
"_content", 'class': "fullContent"});
//         document.body.appendChild(this.content);
//         this.image = new Element('img', {'id': this._name +
"_image", 'class': "fullImage"});
//         this.content.appendChild(this.image);
//         this.prevButton = new Element('div', {'id': this._name +
"_prevButton", 'class': "fullPrevButton"});
//         this.content.appendChild(this.prevButton);
//         this.nextButton = new Element('div', {'id': this._name +
"_nextButton", 'class': "fullNextButton"});
//         this.content.appendChild(this.nextButton);
//         this.hideButton = new Element('div', {'id': this._name +
"_hideButton", 'class': "fullHideButton"});
//         this.content.appendChild(this.hideButton);

        this.mask.hide();
        this.content.hide();
    },

});

The CSS is:

.fullMask {
    position: fixed;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
    background-color: black;
    opacity: 0.75;
    filter: alpha(opacity=75);
    z-index: 2;
}

.fullContent {
    position: fixed;
    left: 50%;
    top: 50%;
    z-index: 3;
}

.fullImage {
    border: 10px solid white;
    z-index: 4;
}

/* Common settings for navigation buttons */
.fullPrevButton, .fullNextButton, .fullHideButton {
    position: absolute;
    height: 100px;
    width: 100px;
    z-index: 5;
    cursor: default;
    opacity: 0;
    filter: alpha(opacity=0);
    background-repeat: no-repeat;
    background-position: center center;
}

.fullPrevButton {
    top: 50%;
    margin-top: -50px;
    right: 50%;
    margin-right: 50px;
    background-image: url("/icons/default/button-left.png");
}

.fullNextButton {
    top: 50%;
    margin-top: -50px;
    left: 50%;
    margin-left: 50px;
    background-image: url("/icons/default/button-right.png");
}

.fullHideButton {
    top: 50%;
    margin-top: 25px;
    left: 50%;
    margin-left: -50px;
    background-image: url("/icons/default/button-hide.png");
}

--

You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.


Reply via email to