Uploadify button: Style with CSS?

后端 未结 8 2179
挽巷
挽巷 2020-12-04 12:44

Is it possible to replace the Uploadify button (which is a graphic containing up/over/down states) with a simple CSS-styled button?

相关标签:
8条回答
  • 2020-12-04 13:06

    I was able to get away with something massively more simple.

    xhtml:

    <div id="uploadify">                  
      Upload Pictures                     
      <div id="uploadify" type="button" />
    </div>                                
    

    css:

    #uploadify object { 
      position:absolute;
      left:0; right:0;  
      width:100%        
    }                   
    

    javascript:

    $("#uploadify>div").uploadify({                     
      'hideButton'   : true                                
      , 'wmode'      : 'transparent'                         
      , 'uploader'   : '/static/uploadify/uploadify.swf'
      , 'script'     : '/static/uploadify.php'          
      , 'folder'     : '/_uploads'                      
      , 'multi'      : true                             
    })                                                  
    
    // If you're using jQuery UI.
    $("#uploadify").button(); 
    

    Probably a little easier, now that we have hideButton: true, not sure if @Herb knew about it.

    UPDATE I wrote this answer in July of 2010. It's now March of 2013. HTML5 supports multiple file-uploads. Don't use uploadify at all; I don't.

    0 讨论(0)
  • 2020-12-04 13:06

    A really simple way is to open the file with Flash

    You can then change the background colour of the symbol UploadBtn

    Save and publish the swf.

    0 讨论(0)
  • 2020-12-04 13:09

    reading your answers helped me to solve this one this way

    1. First wrap the <input> into a <div class=upload-wrap>
    2. Apply styles to this new wrapper (even :hover)
    3. Use the hiddeButton option

    HTML:

    <div class="upload-wrap">
    <input id="file_upload" type="file" name="file_upload" />
    </div>
    

    CSS:

    .upload-wrap{
        background:#ff0;
        width:133px;
        height:36px;
    }
    .upload-wrap:hover{
        background:#f00;
    }
    

    JS

    $('#file_upload').uploadify({
        'uploader'      : 'uploadify/uploadify.swf',
        'script'        : 'uploadify/uploadify.php',
        'folder'        : 'files/images',
        'hideButton'    : true,
        'wmode'     : 'transparent',
        'buttonText'    : 'Upload something'
        'width'         : 133,
        'height'        : 36    
      });
    

    This way you're able to style your button, an keep the buttonText option available. I also had to mess a little bit with the .fla file to get the color and font for my button

    0 讨论(0)
  • 2020-12-04 13:17

    I've been able to come up with a working solution to this. Here's the basic outline:

    • Disable the Uploadify button image buttonImg: " "
    • Make the flash object transparent wmode:"transparent"
    • Using CSS, position a fake styled button or a tag behind the flash object
    • After initializing Uploadify, set the width and height of the object to match the button behind it

    The flash object will shield the button underneath it from mouseover etc. events; so to get hover effects, you'll need to take a couple of additional steps:

    • Wrap both the button and the upload object in a div
    • After initializing Uploadify, set the width and height of the wrapper div to match the button
    • You can then use jQuery to handle the .hover() events on the wrapper div and apply styles to the button

    Putting it all together:

    HTML

    <div class="UploadifyButtonWrapper">
        <a>Upload Files</a>
        <div class="UploadifyObjectWrapper">
           <input type="file" id="Uploadify" name="Uploadify" />
        </div>
    </div>
    

    CSS

    div.UploadifyButtonWrapper{
        position:relative;
    }
    
    /* fake button */
    div.UploadifyButtonWrapper a {
        position:absolute; /* relative to UploadifyButtonWrapper */
        top:0;
        left:0;
        z-index:0;
        display:block;
        float:left;
        border:1px solid gray;
        padding:10px;
        background:silver;
        color:black;
    }
    
    /* pass hover effects to button */
    div.UploadifyButtonWrapper a.Hover {
        background:orange;
        color:white;
    }
    
    /* position flash button above css button */
    div.UploadifyObjectWrapper {
        position:relative;
        z-index:10;
    }
    

    Javascript:

    $("input.Uploadify", self).uploadify({
        ...
        buttonImg: " ",
        wmode: "transparent",
        ...
    });
    var $buttonWrapper = $(".UploadifyButtonWrapper", self);
    var $objectWrapper = $(".UploadifyObjectWrapper", self);
    var $object = $("object", self);
    var $fakeButton = $("a", self);
    var width = $fakeButton.outerWidth();
    var height = $fakeButton.outerHeight();
    $object.attr("width", width).attr("height", height);
    $buttonWrapper.css("width", width + "px").css("height", height + "px")
    $objectWrapper.hover(function() {
        $("a", this).addClass("Hover");
    }, function() {
        $("a", this).removeClass("Hover");
    });
    
    0 讨论(0)
  • 2020-12-04 13:21

    100% working example. Tested in Firefox, Chrome, Opera and IE6!

    HTML:

    <div id="uploadify-wrapper"><div id="uploadify"></div></div>
    <span id="btn">Select files to upload</span>
    <div id="uploadify-queue"></div>
    

    CSS:

    #uploadify-wrapper {position:absolute; overflow:hidden}
    

    JavaScript:

    $('#uploadify').uploadify({width:1000, height:1000, hideButton:true, wmode:'transparent', queueID:'uploadify-queue', ...);
    $('#uploadify-wrapper').width($('#btn').outerWidth()).height($('#btn').outerHeight());
    
    0 讨论(0)
  • 2020-12-04 13:23

    Why not just put a Wrapper around it like this:

    <div class = "uploadWrapper"><input id="file_upload" name="file_upload" type="file" /></div>
    

    Style it like this:

    .uploadWrapper object {background-color: red;}
    .uploadWrapper object:hover {background-color: blue;}
    

    And use the following script:

    <script type="text/javascript">
    $(document).ready(function() {
      $('#file_upload').uploadify({
        'hideButton': true,
        'wmode'     : 'transparent',
        'uploader'  : '/uploadify/uploadify.swf',
        'script'    : '/uploadify/uploadify.php',
        'cancelImg' : '/uploadify/cancel.png',
        'folder'    : '/uploads',
        'auto'      : true
      });
    });
    </script>
    

    Works for me ;) ... and of course you can just use background-images instead of the colors.

    0 讨论(0)
提交回复
热议问题